使用 gsub 时如何限制替换次数?
如何限制 Ruby 中 String#gsub 的替换次数?
在 PHP 中,这可以通过 preg_replace 轻松完成,它采用一个参数来限制替换,但我不知道如何在 Ruby 中做到这一点。
How do you limit the number of replacements made by String#gsub in Ruby?
In PHP this can be easy done with preg_replace which takes a parameter for limiting replacements, but I can't figure out how to do this in Ruby.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以创建一个计数器并在 gsub 循环内递减该计数器。
You can create a counter and decrement that within a gsub loop.
gsub 替换所有出现的情况。
您可以尝试 String#sub
http://ruby-doc.org/core/classes /String.html#M001185
gsub replaces all occurences.
You can try String#sub
http://ruby-doc.org/core/classes/String.html#M001185
您可以使用
str.split
方法,该方法需要一个限制,并使用join
进行替换:当替换字符串与正则表达式匹配(因为分割已完成)时,此方法有效在替换之前:
您还可以将
gsub
与块、计数和三元一起使用:您还可以将正则表达式索引方法与
.times
循环一起使用:但是您可以' t 使用与最后一个的正则表达式匹配的替换:
You can use the
str.split
method, which takes a limit, with ajoin
with the replacement:This works when the replacement string would match the regex since the split is done prior to the replacement:
You can also use
gsub
with a block and count and ternary:You can also use the regex index method with a
.times
loop:But you can't use a replacement that matches the regex for this last one: