Lua:替换字符串中的字符



我有这样的字符串

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

应修改为

abcdef
abcd
abcde foo 
abcd
abcde foo 
  • 如果没有|则什么都不做
  • 如果|(|)后面没有任何内容,则删除这两个字符
  • 如果接下来有内容,请将|(|)替换为<space>

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

您可以使用

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

在线观看 Lua 演示

  • '|[()]$'匹配字符串末尾的|,然后()string.gsub用空字符串替换这些匹配项
  • 然后,|[()]匹配|,然后在字符串中的任何位置匹配()string.gsub用空格和替换这些匹配项。

最新更新