Ziz*_*nzu 6 string lua hyphen gsub
我有两个字符串 - 每个字符串有很多行,如下所示:
value_1 = "DEFAULT-VLAN"
value_2 = "WAN"
data = "HOSTNAME = DEFAULT-VLAN"
result = string.gsub(data,value_1,value_2)
print(result)
Run Code Online (Sandbox Code Playgroud)
结果:
data = "HOSTNAME = DEFAULT-VLAN"
Run Code Online (Sandbox Code Playgroud)
当连字符(" - ")从它正在工作的值中删除时.有没有简单的方法来解决这个问题?
谢谢!
Yu *_*Hao 10
-是Lua模式中的神奇角色.你需要逃脱它.
更改
value_1 = "DEFAULT-VLAN"
Run Code Online (Sandbox Code Playgroud)
至:
value_1 = "DEFAULT%-VLAN"
Run Code Online (Sandbox Code Playgroud)
这是因为string.gsub采用类似于 Regex\xe2\x80\x94 的模式,它不会进行“文字”替换;这意味着您需要为任何具有特殊含义的字符添加前缀%以转义它们。
需要对模式进行转义的特殊字符列表包括:(、)、.、+、-、*、?、[、]、^、$、 和%。对于替换字符串来说,只有%特殊的含义。有了这个,我们可以编写一个替换函数来清理输入。
local function replace(str, what, with)\n what = string.gsub(what, "[%(%)%.%+%-%*%?%[%]%^%$%%]", "%%%1") -- escape pattern\n with = string.gsub(with, "[%%]", "%%%%") -- escape replacement\n return string.gsub(str, what, with)\nend\nRun Code Online (Sandbox Code Playgroud)\n\n然后你可以:
\n\nresult = replace(data, value_1, value_2)\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3462 次 |
| 最近记录: |