搜索
aardio官方社区 门户 查看主题

string.match匹配出中文字符后,再用string.replace为什么会是乱码?

发布者: njlzzdh | 发布时间: 2017-12-24 18:19| 查看数: 297| 评论数: 2|帖子模式

  1. import console

  2. var str = "《晶体管收音multisim机制作入门》(86版)"
  3. var bb = str;  //bb字符串是用来镜像,后面的替换函数都是在bb字符串上操作。

  4. for(i=1;string.len(str);1){
  5.         var flg = string.sub(str,i,i,true);
  6.         if( string.match(flg,"\w") ){ //如果匹配出来是 英文 或 数字 就什么都不干
  7.                
  8.         }
  9.         else {
  10.                 console.log("flg = ",flg)
  11.                 bb = string.replace(bb,flg,flg++" "); //将非英文和数字的字符后面加一个空格。
  12.         }

  13. }
  14. console.log("bb = ",bb); //bb字符串为什么会是乱码?
  15. console.pause();
复制代码


最新评论

Jacen.He 发表于 2017-12-24 18:32:32
以后请把代码稍微整理简化一下,问题自己先理一理。
你这就是一句代码能说清楚的事,不是在为你一个人服务,时间有限。

替换字符没有问题,但是你其中有一个错误的用法:
import console;

var str = "《晶体管收音multisim机制作入门》(86版)";
str = string.replace(str,
"(","( ");

console.log( str );
console.pause(
true);

你排除了字母,和数字,还有标点符号,你不可以不考虑语法是不是正确就直接替换。

先看看文档,不想使用模式匹配语法的时候,在前面加上 "@"

njlzzdh 发表于 2017-12-24 19:08:04
Jacen.He 发表于 2017-12-24 18:32
以后请把代码稍微整理简化一下,问题自己先理一理。
你这就是一句代码能说清楚的事,不是在为你一个人服务 ...

问题解决,确定是我忽略了"("的问题。之前中文匹配一直用的string.find(str,":")。看来我应该复习一下string.match的语法了。

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-4-23 21:29 , Processed in 0.046887 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表