将一个字符串根据分隔符拆分。

我有一个字符串first part;second part。我想在分号 ; 处将其拆分,并返回第二部分。使用以下代码可以正常工作:

start = mystring:find(';')
result = mystring:sub(start)

但我希望使用一行解决:

result = mystring:sub(mystring:find(';'))

它不会引发错误,但它没有返回预期的结果。虽然这并不是什么大问题,因为两行代码可以正常工作,但了解为什么这个单行代码不起作用将有助于我更好地理解 lua 的工作原理。

原文链接 https://stackoverflow.com/questions/6033807

点赞
stackoverflow用户400127
stackoverflow用户400127

find 实际上返回两个值,即你查找的字符串起始位置和结束位置的索引。在这种情况下,两个索引都是 11。

然后将这两个索引传递给 sub,你会得到一个从 11 开始到 11 结束的子字符串,因此你只会得到 ;

2011-05-17 16:18:38
stackoverflow用户107090
stackoverflow用户107090

尝试这个:

s="第一部分;第二部分"
print(s:match(";(.-)$"))

或者这个:

print(s:sub(s:find(";")+1,-1))
2011-05-17 17:08:31
stackoverflow用户12048
stackoverflow用户12048

这个也可以:

result = mystring:sub((mystring:find(';')))

额外的括号确保sub只使用一个参数调用,因此它将使用默认值(即mystring的末尾)作为第二个参数。

2011-05-18 07:25:52