Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带连字符的Lua string.gsub_String_Lua_Gsub_Hyphen - Fatal编程技术网

带连字符的Lua string.gsub

带连字符的Lua string.gsub,string,lua,gsub,hyphen,String,Lua,Gsub,Hyphen,我有两个字符串-每个字符串有许多行,如下所示: value_1 = "DEFAULT-VLAN" value_2 = "WAN" data = "HOSTNAME = DEFAULT-VLAN" result = string.gsub(data,value_1,value_2) print(result) 结果: data = "HOSTNAME = DEFAULT-VLAN" 从正在使用的值中删除连字符(“-”)时。 有没有简单的方法来解决这个问题 谢谢 -是Lua模式中的一个神奇角色。

我有两个字符串-每个字符串有许多行,如下所示:

value_1 = "DEFAULT-VLAN"
value_2 = "WAN"
data = "HOSTNAME = DEFAULT-VLAN"
result = string.gsub(data,value_1,value_2)
print(result)
结果:

data = "HOSTNAME = DEFAULT-VLAN"
从正在使用的值中删除连字符(“-”)时。 有没有简单的方法来解决这个问题


谢谢

-
是Lua模式中的一个神奇角色。你需要逃避它

改变

value_1 = "DEFAULT-VLAN"
致:


这是因为
string.gsub
采用类似于Regex的模式,它不进行“文字”替换;这意味着您需要在任何具有特殊含义的字符前面加上
%
以转义它们

模式需要转义的特殊字符的列表是:
+
-
*
[
]
$
,和
。对于替换字符串,只有
%
具有特殊含义。有了这个,我们可以编写一个替换函数来清理输入

local function replace(str, what, with)
    what = string.gsub(what, "[%(%)%.%+%-%*%?%[%]%^%$%%]", "%%%1") -- escape pattern
    with = string.gsub(with, "[%%]", "%%%%") -- escape replacement
    return string.gsub(str, what, with)
end
然后你可以:

result = replace(data, value_1, value_2)

为什么我会因此而得到
nil
<代码>字符串.find(“evs%-admin%-loggedstatistics%.csv”,“evs%-admin%-loggedstatistics%.csv”)
@codingkapoor这里的魔术字符用于模式,而不是文字字符串。删除
字符串第一个参数中的所有
%
。查找
result = replace(data, value_1, value_2)