【问题标题】:How to take out only 1 word from a string in Lua如何从 Lua 中的字符串中仅取出 1 个单词
【发布时间】:2014-08-27 12:33:44
【问题描述】:

我知道如何拆分整个字符串将其放入表格中,但我只需要取出第一个单词然后字符串的其余部分需要保持不变。

我试图对此做点什么,但我不知道:

words = {}
for word in s:gmatch("%w+") do table.insert(words,word) end

【问题讨论】:

    标签: string lua split lua-patterns


    【解决方案1】:

    要匹配一个单词,你应该使用string.match而不是string.gmatch

    local words = {}
    words[1], words[2] = s:match("(%w+)(.+)")
    

    words[1] 包含第一个单词,words[2] 包含其余单词。

    【讨论】:

    • 字符串是“Cookie hello there sir”,它给了我错误“尝试索引?(零值)
    • @user3319763 检查ideone.com/fao4Q8 看看有什么区别。也许words 在您的程序中应该是全局的。我习惯改成local
    【解决方案2】:

    Yu Hao 的解决方案有一个突破的边缘情况:如果 's' 本身只是一个单词,它将返回那个单词,不包含最后一个字符到 words[1] 和最后一个字符到 words[2]。

    这是我提出的一种解决方法,可以正确捕获这种边缘情况:

    local words = {}
    words[1], words[2] = s:match("(%w+)(%W+)")
    if words[1] == nil then words[1] = s end
    

    .+ 更改为\W+(因此单词之间只能出现非单词字符)。这可能会导致根本不匹配(如果字符串为空或只有一个单词),所以我检查并修复了这种情况。

    可能有更好的方法可以在单个匹配模式中获取所有内容,但我只是想提供一个解决方法,如果有人遇到这种边缘情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 2017-02-14
      • 2012-11-25
      • 2012-10-27
      • 2023-04-03
      相关资源
      最近更新 更多