簡體   English   中英

如何從Lua中的字符串中只取出1個單詞

[英]How to take out only 1 word from a string in Lua

我知道如何拆分整個字符串並將其放入表中,但我只需要取出第一個單詞,然后字符串的 rest 需要保持不變。

我試圖對此做點什么,但我不知道:

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

要匹配一個單詞,您應該使用string.match而不是string.gmatch

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

words[1]包含第一個單詞, words[2]包含其余words[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+ (因此單詞之間只能出現非單詞字符)。 這可能會導致根本不匹配(如果字符串為空或只有一個單詞),所以我檢查並修復了這種情況。

可能有更好的方法可以在單個匹配模式中完成所有操作,但如果有人遇到這種邊緣情況,我只是想提供一個解決方法。

奧利的解決方案似乎有點矯枉過正。

如果你想處理字符串可能包含 1 個或多個單詞的情況,那么你只需要將第二次捕獲從“.+”更改為“.*”。

s:match("(%w+)(.*)")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM