如何从Lua中的字符串中只取出一个单词

时间:2014-07-07 05:34:35

标签: string lua split lua-patterns

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

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

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

2 个答案:

答案 0 :(得分:4)

要匹配一个字,您应该使用string.match代替string.gmatch

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

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

答案 1 :(得分:0)

Yu Hao 的解决方案有一个突破性的极端情况:如果 's' 本身只是一个单词,它将返回该单词,不带最后一个字符到 words[1],最后一个字符到 words[2]。< /p>

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

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

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

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