string - Lua string.find 找不到一行中的最后一个单词

标签 string lua lua-patterns

这是 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/

相关文章:

string - 是否有一个Lua string.find没有模式

C 字符串错误 - 需要理解代码

string - 使用 Lua 从 URL 获取文件名

java - String.valueOf(View) 返回什么?

string - 预期结构 `std::string::String`,找到结构 `std::str::Split`

Lua 自引用

lua - 迭代表的表

function - lua - 想从另一个模块调用 main.lua 中的函数

Lua:ANSI 转义模式