aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 8533|回复: 2

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

[复制链接]

6

主题

0

回帖

104

积分

一级会员

积分
104
发表于 2017-12-24 18:19:27 | 显示全部楼层 |阅读模式
  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.slice(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();
复制代码


166

主题

2154

回帖

1万

积分

管理员

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

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

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

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

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

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

6

主题

0

回帖

104

积分

一级会员

积分
104
 楼主| 发表于 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, 2025-1-20 15:52 , Processed in 0.060674 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

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