有一些 gsub 的替代方法可以将一个字符串替换为另一个?
根据文档“如果替换是一个字符串,它将替换匹配的文本。它可能包含对模式捕获组的反向引用,形式为\d,其中 d 是组号,或\k,其中n 是组名。"
我不想要这个功能..
简化示例:
"abc".gsub("b", "\\7") -> "ac"
我想要"a\7c"
..
问题是从用户那里询问替换字符串(实际上它是一个包含 "xxx\7.0\yyy"
的路径),如果它很简单一个固定的string 我可以自己转义它。
我知道这行得通:"abc".gsub("b") { |x| "\\\7"}
.. 但作为 ruby 如此美丽的语言,我相信到目前为止应该有一个我在文档中忽略的简单替代方案。
最佳答案
您可以使用(编辑:不可以)Regexp.escape
转义用户提供的字符串:
user_input = '\7'
puts "abc".gsub("b", Regexp.escape(user_input))
a\7c
否则使用单引号而不是双引号转义:
puts "abc".gsub("b", '\\\7')
a\7c
...或者用双引号你只需要更多转义:
puts "abc".gsub("b", "\\\\7")
a\7c
...或 block 表示法,但您可以跳过 block 变量就好了:
puts "abc".gsub("b") { '\7' }
a\7c
关于ruby - 如何转义 gsub 替换字符串中的反向引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11077800/