我正在尝试将gsub
字符串(在Lua中)打印到stdout
这里我的代码如何。
print('string.gsub(\'VEECTORY\',\'EE\',\'I\') =>', string.gsub('VEECTORY','EE','I'))
每次我运行此操作时,虽然我得到了所需的结果,但我看到1
出现在输出中。
所以,输出看起来像这样。
string.gsub('VEECTORY','EE','I') => VICTORY 1
我无法理解1
代表什么,但如果我使用了变量,我就不再看到1
了。
local replace_string = string.gsub('VEECTORY','EE','I')
print('string.gsub(\'VEECTORY\',\'EE\',\'I\') =>',replace_string)
我输出为
string.gsub('VEECTORY','EE','I') => VICTORY
我还注意到当我在Lua控制台中运行上面的代码时 即此代码
local replace_string = string.gsub('VEECTORY','EE','I')
print('string.gsub(\'VEECTORY\',\'EE\',\'I\') =>',replace_string)
我得到的输出为nil
我错过了什么?
答案 0 :(得分:1)
string.gsub
有两个返回值。第一个是结果字符串,第二个是发生的匹配总数。
在你的例子中:
string.gsub('VEECTORY','EE','I')
第二个返回值是1
,因为替换发生了一次。
将结果指定为:
local replace_string = string.gsub('VEECTORY','EE','I')
第一个返回值分配给replace_string
,而第二个返回值则被丢弃。
您可以通过以下方式明确获得第二个返回值:
local replace_string, num = string.gsub('VEECTORY','EE','I')
最后,在交互模式下,每一行本身都是一个块,因此局部变量超出了下一行的范围,因此您看到replace_string
变为nil
。如果您使用全局变量:
replace_string = string.gsub('VEECTORY','EE','I')
print('string.gsub(\'VEECTORY\',\'EE\',\'I\') =>',replace_string)
输出也将在交互模式中按预期进行。