在分隔符上拆分字符串

时间:2011-05-17 16:06:36

标签: lua

我有一个像first part;second part这样的字符串。我想将它拆分为;并返回第二部分。一切正常:

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

但我希望能在一条线上做到这一点:

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

它不会引发错误,但它不会返回预期的结果。这不是一个大问题,因为它在两行代码上运行良好,但理解为什么它不在oneliner上工作将帮助我更好地理解lua如何工作。

3 个答案:

答案 0 :(得分:3)

find实际上返回两个值,即您查找的字符串所在的开始和结束索引。在这种情况下,两个指数都是11.
然后,当您将这两个索引传递给sub时,您将获得一个开始和结束于11的子字符串,因此您只能得到';'。

答案 1 :(得分:3)

试试这个:

s="first part;second part"  
print(s:match(";(.-)$"))

或者这个:

print(s:sub(s:find(";")+1,-1))

答案 2 :(得分:1)

这也有效:

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

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