LUA 字符串,删除非字母数字或 space
LUA string, drop non alphanumeric or space
我的客户输入可能包括字母、数字或 space。例如:
local customer_input = 'I need 2 tomatoes';
或
local customer_input = 'I need two tomatoes';
但是,由于我的应用程序的性质,我可能会在 customer_input 字符串中得到 #、*、@ 等。我想删除任何非字母数字字符,但 space.
我试过这些:
customer_input , _ = customer_input:gsub("%W%S+", "");
除了短语中的第一个单词,这个词会删除所有内容。
或
customer_input , _ = customer_input:gsub("%W%S", "");
这个实际上删除了 space 和每个单词的第一个字母。
所以,我知道我做错了,但我不确定如何匹配字母数字 + space。我相信这一定很简单,但我一直无法弄明白。
非常感谢您的帮助!
您可以使用
customer_input , _ = customer_input:gsub("[^%w%s]+", "");
图案详情
[^
- 匹配任何字符的取反字符 class 的开头,但:
%w
- 字母数字
%s
- 一个空格
]+
- 1 次或更多次。
我的客户输入可能包括字母、数字或 space。例如:
local customer_input = 'I need 2 tomatoes';
或
local customer_input = 'I need two tomatoes';
但是,由于我的应用程序的性质,我可能会在 customer_input 字符串中得到 #、*、@ 等。我想删除任何非字母数字字符,但 space.
我试过这些:
customer_input , _ = customer_input:gsub("%W%S+", "");
除了短语中的第一个单词,这个词会删除所有内容。
或
customer_input , _ = customer_input:gsub("%W%S", "");
这个实际上删除了 space 和每个单词的第一个字母。
所以,我知道我做错了,但我不确定如何匹配字母数字 + space。我相信这一定很简单,但我一直无法弄明白。
非常感谢您的帮助!
您可以使用
customer_input , _ = customer_input:gsub("[^%w%s]+", "");
图案详情
[^
- 匹配任何字符的取反字符 class 的开头,但:%w
- 字母数字%s
- 一个空格
]+
- 1 次或更多次。