首页 > 解决方案 > LUA 字符串,删除非字母数字或空格

问题描述

我有可能包括字母、数字或空格的客户输入。例如:

local customer_input = 'I need 2 tomatoes';

或者

local customer_input = 'I need two tomatoes';

但是,由于我的应用程序的性质,我可能会在 customer_input 字符串中得到 #、*、@ 等。我想删除除空格以外的任何非字母数字字符。

我试过这些:

customer_input , _ = customer_input:gsub("%W%S+", ""); 

这个删除除了短语中的第一个单词之外的所有内容。

或者

customer_input , _ = customer_input:gsub("%W%S", ""); 

这个实际上删除了每个单词的空格和第一个字母。

所以,我知道我做错了,但我不确定如何匹配字母数字 + 空格。我确信这一定很简单,但我无法弄清楚。

非常感谢您的帮助!

标签: luapattern-matchinggsublua-patterns

解决方案


您可以使用

customer_input , _ = customer_input:gsub("[^%w%s]+", ""); 

在线查看Lua 演示

图案细节

  • [^- 匹配任何字符的否定字符类的开始,但是:
    • %w- 一个字母数字
    • %s- 一个空格
  • ]+- 1 次或多次。

推荐阅读