如何从Lua中的字符串中删除所有特殊字符,标点符号和空格?

时间:2017-07-22 22:41:32

标签: lua

在Lua中(我只能在其他语言中找到示例),如何从字符串中删除所有标点符号,特殊字符和空格?例如,s t!r@i%p^(p,e"d会变为stripped

3 个答案:

答案 0 :(得分:2)

如果删除所有特殊字符,空格,......剩下的就是字母和数字,对吧?因此,如果str是您的字符串,

str:gsub( "%W", "" )

将是已清理的字符串。

%w匹配所有单词字符,大写字母为%W以匹配所有非单词字符。如果这不完全符合您的要求,您可以build your own character class - 例如如果您想将_包含为可接受的字符,可以使用[^%w_]

答案 1 :(得分:2)

Lua patterns中,字符类def bestpair(xs, ys, i): if i == 0: return 0 x0 = [x for x in xs if (x&i)==0] x1 = [x for x in xs if x&i] y0 = [y for y in ys if (y&i)==0] y1 = [y for y in ys if y&i] choices = [] if x0 and y0: choices.append(bestpair(x0, y0, i//2)) if x1 and y1: choices.append(bestpair(x1, y1, i//2)) if choices: return min(choices) return bestpair(xs, ys, i//2) + i def minxor(aa): bits = unbits = 0 for a in aa: bits |= a unbits |= ~a i = bits & unbits while i & (i-1): i &= i-1 return bestpair([a for a in aa if a & i], [a for a in aa if (a & i)==0], i) print minxor(range(100000)) 表示所有标点字符,字符类%p表示所有控制字符,字符类%c表示所有空格字符。因此,您可以使用集合%s表示所有标点字符,所有控制字符和所有空白字符。

要从字符串中删除这些字符,您可以使用string.gsub。对于字符串[%p%c%s],代码如下:

str

(请注意,这与Egor's code snippet above基本相同。)

答案 2 :(得分:0)

这对我有用

m=your_string:gsub('%W','')