我想用分隔符分割一个字符串,只得到最后一部分.我不关心其余的事情.我知道我能做到:
local last
for p in string.gmatch('file_name_test', '_%w+$') do last = p end
Run Code Online (Sandbox Code Playgroud)
哪个有效,但是,恕我直言,丑陋.
有没有更优雅的方式来说:
local last = string.gmatch('file_name_test', '_%w+$')[1]
Run Code Online (Sandbox Code Playgroud)
哪个不起作用,因为gmatch返回迭代器(而不是表).
使用string.match不是迭代器:
local last = string.match('file_name_test', '_(%w+)$')
print (last) --> test
Run Code Online (Sandbox Code Playgroud)
尽管其他答案确实为您提供了针对您的情况的正确答案,但我将针对您的问题提出一个答案。这是从迭代器中获取第一项。
答案其实很简单。由于迭代器只是不断返回直到返回 nil 的东西,所以我们只需要调用它!
local first = string.gmatch('file_name_test', '_%w+$')()
Run Code Online (Sandbox Code Playgroud)
然而我很困惑,因为在你的问题中你还问了它会返回的最后一件事。我很遗憾地说,如果不迭代所有这些,您就无法做到这一点,因为迭代器无法“向前跳转”。
| 归档时间: |
|
| 查看次数: |
780 次 |
| 最近记录: |