I have two strings - each string has many lines like the following:
value_1 = "DEFAULT-VLAN"
value_2 = "WAN"
data = "HOSTNAME = DEFAULT-VLAN"
result = string.gsub(data,value_1,value_2)
print(result)
Result:
data = "HOSTNAME = DEFAULT-VLAN"
When the hyphen ("-") is deleted from the value it is working. Is there an easy way to solve this?
Thanks!
This is because
string.gsub
takes a pattern similar to Regex—it does not do a "literal" replacement; this means you need to prefix any characters that have a special meaning with%
to escape them.A list of special characters that need escaping for the pattern are:
(
,)
,.
,+
,-
,*
,?
,[
,]
,^
,$
, and%
. For the replacement string, only%
has a special meaning. With this, we can write a replace function that sanitizes the inputs.And then you can:
-
is a magic character in Lua patterns. You need to escape it.Change
to: