Lua:替换字符串中的字符

时间:2018-10-03 07:49:45

标签: replace lua pattern-matching lua-patterns

我有类似的字符串

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

应修改为

abcdef
abcd
abcde \foo 
abcd
abcde \foo 
  • 如果没有|,则什么也不做
  • 如果|(|)之后没有任何内容,则删除这两个字符
  • 如果出现问题,请用|(替换|)<space>\

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

1 个答案:

答案 0 :(得分:1)

您可以使用

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

请参见Lua demo online

详细信息

  • '|[()]$'匹配|,然后匹配字符串末尾的(),并且string.gsub将这些出现的位置替换为空字符串
  • |[()]然后匹配|,然后匹配字符串中的() 任意位置,并且string.gsub替换这些出现的位置带有空格和\