大家好 , 我是微信官方账号3分钟学堂的郭成员~
删除字符串中的标点符号不是一个常用的功能 , 但偶尔会用到 。比如在制作采集脚本时 , 如果用户名字中有表情符号 , 则无法显示 , 会被一个问号代替 。
通常我想到的解决办法是“过滤” 。段落中的有效字符是中文、英文和数字 , 所以我只需要提取这些类型的字符串 。
正则匹配是从大量字符中提取指定字符最常用的方法 。lua正则匹配用在key中 , lua中的数字和字母用显式正则表达式 , 中文没有 。通常使用[8-4]这种表达方式:
导入& # 34;山海. & # 34Dim str = & # 34;你好 , 你好 , 水电 , world3aasdas50849638 & # 34暗淡的汉字=上海 。regexfind (str , & # 34;[8-4] ")TracePrint汉字(0)
这意味着提取ascII码128-254 。如果字符串中包含一些特殊符号 , 比如表情符号 , 就会被当作中文 , 这是不准确的 。
最早摆脱特殊符号的方法是字符串替换 , 即用空值替换特殊符号 。后来发现特殊符号显示在带问号的按键里 , 无法替换 。这个得想别的办法 。
既然按键向导不行 , 那就试试lua吧 , 于是我找了一个lua的处理代码 , 封装成一个函数 , 去掉这些特殊符号 。
代码如下:
function QM plugin . filter _ spec _ charslocal ss = { }local k = 1while true doif k & gt;# s thenbreakendlocal c = string . byte(s , k)if not c thenbreakendif 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))endk = k 1else if c & lt;224那么k = k ^ 2else 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 = 184elseif c == 233那么a2 , a4 = 1= a1和c1 & lt= a2和c2 & gt= a3和c2 & lt= a4然后table.insert(ss , string.char(c , c1 , C2))endendk = k 3else if c & lt;248那么k = k 4else if c & lt;252那么k = k 5else if c & lt;254然后k = k 6endend返回table . concat(ss)end
使用方法是将代码放入文本中 , 保存为带有lua后缀的文件 , 然后放入key的插件目录中 。

trace print XM . filter _ spec _ chars(str)
这个插件有很多简单的功能 , 就是去掉各种符号 , 保留中文、字母、数字 。
【按键精灵插件源码 按键精灵把字符串处理为数值】=文本结束=
,
推荐阅读
- WOW怀旧服人口普查插件受限 魔兽世界怀旧服人口普查怎么查询
- shift有哪些用法 如何使用shift按键
- 小花仙精灵王卡牌哪里有卖的
- 小米平板有中间按键吗
- 小米3按键灯有两个灯怎么不亮呢
- 键盘numlock灯亮按键无反应
- 新飞度落锁按键在哪
- 诡计 宠物小精灵
- 电脑键盘错乱失灵解决办法 电脑键盘按键错乱怎么恢复
- 广汽传祺gs4方向盘按键失效怎么办