在 Lua 中了解 string.gsub
Understanding string.gsub in Lua
我正在尝试将 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
我错过了什么?
string.gsub
有两个 return 值。第一个是结果字符串,第二个是发生的匹配总数。
在你的例子中:
string.gsub('VEECTORY','EE','I')
第二个 return 值是 1
因为替换发生了一次。
当您将结果分配为:
local replace_string = string.gsub('VEECTORY','EE','I')
第一个 return 值分配给 replace_string
,而第二个 return 值被丢弃。
您可以通过以下方式显式获取第二个 return 值:
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)
交互模式下的输出也将如预期。
我正在尝试将 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
我错过了什么?
string.gsub
有两个 return 值。第一个是结果字符串,第二个是发生的匹配总数。
在你的例子中:
string.gsub('VEECTORY','EE','I')
第二个 return 值是 1
因为替换发生了一次。
当您将结果分配为:
local replace_string = string.gsub('VEECTORY','EE','I')
第一个 return 值分配给 replace_string
,而第二个 return 值被丢弃。
您可以通过以下方式显式获取第二个 return 值:
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)
交互模式下的输出也将如预期。