Lua:替换字符串中的字符

Lua: Replace characters in a string

我有这样的字符串

abcdef
abcd|(
abcde|(foo 
abcd|)
abcde|)foo

应该修改为

abcdef
abcd
abcde \foo 
abcd
abcde \foo 

如果可能的话,我对短模式表达式很感兴趣。我可以通过几个 string.findstring.sub 来做到这一点,但是我有 很多 if 语句。

您可以使用

function repl(v)
    res, _ = string.gsub(v:gsub('|[()]$', ''), '|[()]', ' \')
    return res
end

Lua demo online

详情

  • '|[()]$' 匹配 |,然后匹配字符串末尾的 (),并且 string.gsub 将这些匹配项替换为空字符串
  • |[()] 然后匹配 | 然后匹配字符串中的 () anywherestring.gsub 将这些事件替换为 space 和 \.