ruby-on-rails - 替换直到删除所有匹配项

标签 ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我有以下字符串:

",||||||||||||||"
",|||||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/

相关文章:

ruby-on-rails - 应该和 before_ 回调

ruby-on-rails - 如何在 rails 开发环境中使用 factory_girl 正确排序?

ruby-on-rails - 如何使用Rails 3中的Capybara从选择框中选择日期?

ruby-on-rails-3 - 在 Rails 中手动清除片段缓存

ruby-on-rails-3 - rails 3 activerecord order - 什么是正确的sql注入(inject)工作?

jquery - 如果 Rails 中的 text_field_tag 表单助手被禁用,它不会提交吗?

ruby-on-rails - 在 cucumber 测试运行之前运行种子 - Rails 3.2

ruby - 在 rake 任务中提问

mysql - 如何在 Ruby 中获得良好的 MySQL 驱动程序性能

ruby - 使 Ruby 服务器在端口 80 上工作