【问题标题】:LUA string, drop non alphanumeric or spaceLUA 字符串,删除非字母数字或空格
【发布时间】:2025-11-25 15:30:02
【问题描述】:

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

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", ""); 

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

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

非常感谢您的帮助!

【问题讨论】:

    标签: lua pattern-matching gsub lua-patterns


    【解决方案1】:

    你可以使用

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

    Lua demo online

    模式详情

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

    【讨论】:

    • 嗨@Wiktor,非常感谢!它就像一个魅力。我完全忘记了 [...] 否定表达式。
    最近更新 更多