Lua string.find 找不到一行中的最后一个字
Lua string.find can't find the last word in a line
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)
抱歉,呃,"resurrecting" 这个问题,但我想我有更好的解决方案。
不使用 allwords 函数,你能不能只这样做:
for word in io.read():gmatch("%S+") do
print(word)
end
函数
gmatch("%S+")
returns 字符串中的所有单词。
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)
抱歉,呃,"resurrecting" 这个问题,但我想我有更好的解决方案。
不使用 allwords 函数,你能不能只这样做:
for word in io.read():gmatch("%S+") do
print(word)
end
函数
gmatch("%S+")
returns 字符串中的所有单词。