这是 Lua 编程书中的一个案例。代码如下,我的问题是为什么它不能得到该行的最后一个字?
function allwords()
local line=io.read()
local pos=1
return function ()
while line do
local s,e=string.find(line,"%w+ ",pos)
if s then
pos=e+1
return string.sub(line,s,e)
else
line=io.read()
pos=1
end
end
return nil
end
end
for word in allwords() do
print(word)
end
最佳答案
在这一行:
local s,e=string.find(line,"%w+ ",pos)
-- ^
模式中存在空格
"%w+ "
,所以它匹配一个单词后跟一个空格。当您输入时,例如 word1 word2 word3
然后按 Enter,word3
后面没有空格。书中的例子中没有空格:
local s, e = string.find(line, "%w+", pos)
关于string - Lua string.find 找不到一行中的最后一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28446523/