String 如何从Lua中的字符串中仅提取1个单词

String 如何从Lua中的字符串中仅提取1个单词,string,lua,split,lua-patterns,String,Lua,Split,Lua Patterns,我知道如何分割整个字符串并将其放入表格中,但我只需要取出第一个单词,然后字符串的其余部分需要保持不变 我试图在这方面做些什么,但我不知道: words = {} for word in s:gmatch("%w+") do table.insert(words,word) end 要匹配一个单词,应使用string.match而不是string.gmatch: 单词[1]包含第一个单词,单词[2]包含其余单词。要匹配一个单词,应使用string.match而不是string.gmatch: 单

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

我试图在这方面做些什么,但我不知道:

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

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


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

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


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

余浩的解决方案有一个破折号:如果“s”本身只是一个单词,它将返回该单词,而不是最后一个字符返回单词[1],最后一个字符返回单词[2]

下面是我制定的一个解决方案,它将正确地处理此edge案例:

本地单词={} 单词[1],单词[2]=s:匹配%w+%w+ 如果字[1]=nil,则字[1]=s结束 已更改。+为\W+,因此单词之间只能有非单词字符。如果字符串为空或只有一个单词,则可能会导致根本不匹配,因此我会检查并修复该情况


也许有更好的方法可以将所有内容都放在一个匹配模式中,但我只是想提供一个解决方案,如果有人碰到这个边缘大小写。

余浩的解决方案有一个边缘大小写出现了问题:如果“s”本身只是一个单词,它会将该单词返回,而不是将最后一个字符返回到单词[1],将最后一个字符返回到单词[2]

下面是我制定的一个解决方案,它将正确地处理此edge案例:

本地单词={} 单词[1],单词[2]=s:匹配%w+%w+ 如果字[1]=nil,则字[1]=s结束 已更改。+为\W+,因此单词之间只能有非单词字符。如果字符串为空或只有一个单词,则可能会导致根本不匹配,因此我会检查并修复该情况


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

字符串是Cookie hello There,先生,它给了我尝试索引的错误信息?零value@user3319763看看有什么不同。也许文字在你的程序中应该是全球性的。我习惯性地将其修改为本地。字符串是Cookie hello here,先生,它给了我尝试索引的错误信息?零value@user3319763看看有什么不同。也许文字在你的程序中应该是全球性的。我把它改成本地的习惯。
local words = {}
words[1], words[2] = s:match("(%w+)(.+)")