1. 城镇大全网
  2. 综合百科

按键精灵把字符串处理为数值(按键精灵插件源码)

大家好,我是微信官方账号3分钟学堂的郭成员~

删除字符串中的标点符号不是一个常用的功能,但偶尔会用到。比如在制作采集脚本时,如果用户名字中有表情符号,则无法显示,会被一个问号代替。

通常我想到的解决办法是“过滤”。段落中的有效字符是中文、英文和数字,所以我只需要提取这些类型的字符串。

正则匹配是从大量字符中提取指定字符最常用的方法。lua正则匹配用在key中,lua中的数字和字母用显式正则表达式,中文没有。通常使用[8-4]这种表达方式:

导入& # 34;山海. & # 34 Dim str = & # 34;你好,你好,水电,world3aasdas50849638 & # 34 暗淡的汉字=上海。regexfind (str,& # 34;[8-4] ") TracePrint汉字(0)

这意味着提取ascII码128-254。如果字符串中包含一些特殊符号,比如表情符号,就会被当作中文,这是不准确的。

最早摆脱特殊符号的方法是字符串替换,即用空值替换特殊符号。后来发现特殊符号显示在带问号的按键里,无法替换。这个得想别的办法。

既然按键向导不行,那就试试lua吧,于是我找了一个lua的处理代码,封装成一个函数,去掉这些特殊符号。

代码如下:

function QM plugin . filter _ spec _ chars local ss = { } local k = 1 while true do if k & gt;# s then break end local c = string . byte(s,k) if not c then break end if c & lt;192那么 if(c & gt;= 48且c & lt= 57)或(c & gt= 65且c & lt= 90°)或(c & gt= 97和c & lt= 122)然后 table.insert(ss,string . char(c)) end k = k 1 else if c & lt;224那么 k = k ^ 2 else if c & lt;240然后 如果c & gt= 228且c & lt= 233那么 local c1 = string.byte(s,k 1) local c2 = string.byte(s,k 2) 如果c1和c2那么 local a1,a2,a3,a4 = 128,191,128,191 如果c == 228那么 a1 = 184 elseif c == 233那么 a2,a4 = 1= a1和c1 & lt= a2和c2 & gt= a3和c2 & lt= a4然后 table.insert(ss,string.char(c,c1,C2)) end end k = k 3 else if c & lt;248那么 k = k 4 else if c & lt;252那么 k = k 5 else if c & lt;254然后 k = k 6 end end 返回table . concat(ss) end

使用方法是将代码放入文本中,保存为带有lua后缀的文件,然后放入key的插件目录中。

trace print XM . filter _ spec _ chars(str)

这个插件有很多简单的功能,就是去掉各种符号,保留中文、字母、数字。

=文本结束=

,

猜你喜欢:综合百科

综合百科按键精灵把字符串处理为数值(按键精灵插件源码)

转载请注明:原文链接 | http://www.nnxc.com.cn/10043317161.html