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