Lua:替换字符串中的字符
Lua: Replace characters in a string
我有这样的字符串
abcdef
abcd|(
abcde|(foo
abcd|)
abcde|)foo
应该修改为
abcdef
abcd
abcde \foo
abcd
abcde \foo
- 如果没有
|
则什么也不做
- 如果
|(
或 |)
后面没有任何内容,则删除这两个字符
- 如果后面有内容,则将
|(
或 |)
替换为 <space>\
如果可能的话,我对短模式表达式很感兴趣。我可以通过几个 string.find
和 string.sub
来做到这一点,但是我有 很多 if
语句。
您可以使用
function repl(v)
res, _ = string.gsub(v:gsub('|[()]$', ''), '|[()]', ' \')
return res
end
详情
'|[()]$'
匹配 |
,然后匹配字符串末尾的 (
或 )
,并且 string.gsub
将这些匹配项替换为空字符串
|[()]
然后匹配 |
然后匹配字符串中的 (
或 )
anywhere 和 string.gsub
将这些事件替换为 space 和 \
.
我有这样的字符串
abcdef
abcd|(
abcde|(foo
abcd|)
abcde|)foo
应该修改为
abcdef
abcd
abcde \foo
abcd
abcde \foo
- 如果没有
|
则什么也不做 - 如果
|(
或|)
后面没有任何内容,则删除这两个字符 - 如果后面有内容,则将
|(
或|)
替换为<space>\
如果可能的话,我对短模式表达式很感兴趣。我可以通过几个 string.find
和 string.sub
来做到这一点,但是我有 很多 if
语句。
您可以使用
function repl(v)
res, _ = string.gsub(v:gsub('|[()]$', ''), '|[()]', ' \')
return res
end
详情
'|[()]$'
匹配|
,然后匹配字符串末尾的(
或)
,并且string.gsub
将这些匹配项替换为空字符串|[()]
然后匹配|
然后匹配字符串中的(
或)
anywhere 和string.gsub
将这些事件替换为 space 和\
.