Can';Lua中的t返回子字符串

Can';Lua中的t返回子字符串,lua,Lua,正在从另一个函数调用此findword函数。在下面的函数中,s包含一个长字符串。 但问题是,当我对s:byte和s:sub使用“:”时,它说s是一个没有子节点的叶节点。我做错了 2.lua中是否有名为_isWhite的函数?如果没有,我应该用什么来代替它 local function findword(s,i) local j=i+1 while not _iswhite(s:byte(j)) and j<#s do j=j+1 end return s:sub(i,j),j end 局

正在从另一个函数调用此findword函数。在下面的函数中,s包含一个长字符串。 但问题是,当我对s:byte和s:sub使用“:”时,它说s是一个没有子节点的叶节点。我做错了

2.lua中是否有名为_isWhite的函数?如果没有,我应该用什么来代替它

local function findword(s,i)
local j=i+1
while not _iswhite(s:byte(j)) and j<#s do
j=j+1
end
return s:sub(i,j),j
end
局部函数findword(s,i)
局部j=i+1

如果不是白色(s:byte(j))和j要处理字符串中的所有单词,请尝试以下操作:

for w in s:gmatch("(%S+)") do print(w) end
for w,k in s:gmatch("(%S+)()") do print(w,k-1) end
按照您发布的代码,单词只是一系列非空白字符

如果需要每个单词的结尾位置,请尝试以下操作:

for w in s:gmatch("(%S+)") do print(w) end
for w,k in s:gmatch("(%S+)()") do print(w,k-1) end

您传递的变量可能不是字符串。也许可以通过获取节点的值或使用
s=tostring(s)
将s转换为字符串来检索字符串。+1很好,但是如果@gwell是正确的(似乎很可能),那么它必须类似于
for w in tostring(s):gmatch。。。结束
。不,但我的要求是在每次迭代时返回该单词,其中包含该单词最后一个字符的索引,这是上面所建议的无法实现的。有什么建议吗?@ihf:你能告诉我(%S+)后面的put()是如何返回索引号的吗?@Simrankaur,这些都是空捕获,请参见本节最后一段。