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!
- is a magic character in Lua patterns. You need to escape it.
Change
value_1 = "DEFAULT-VLAN"
to:
value_1 = "DEFAULT%-VLAN"
                        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.
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
And then you can:
result = replace(data, value_1, value_2)
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With