我有以下字符串:
",||||||||||||||"
",|||||a|||||,|"
我想实现所有出现的 ",|"
都替换为 ",,"
输出应该是这样的:
",,,,,,,,,,,,,,,"
",,,,,,a|||||,,"
当我在字符串上运行 .gsub(',|', ',,')
时,我没有得到所需的输出。
",,|||||||||||||"
",,||||a|||||,,"
那是因为它没有多次运行gsub
。
有没有类似的递归运行的方法。
最佳答案
正则表达式匹配不能重叠。因为火柴是用来替换的,所以你不能那样做。这里有两个解决方法:
str = ",|||||a|||||,|"
while str.gsub!(/,\|/, ',,'); end
str = ",|||||a|||||,|"
str.gsub!(/,(\|+)/) { "," * ($1.length + 1) }
关于ruby-on-rails - 替换直到删除所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42833388/