0

假设我有一个字符串:

asd;;%$@#!G'{}[]

现在我想转义特殊符号:

;&|><*?`$(){}[]!#

因此,输出将类似于:

asd\;\;%\$@\#\!G\'\{\}\[\]

如何gsub/sub在 Ruby 中实现这一点?

4

2 回答 2

1
test_value = "asd;;%$@#!G'{}[]"
SPEC_REGEXP = /((;)|(\&)|(\|)|(>)|(<)|(\*)(\?)|(`)|(\$)|(\()|(\))|({)|(})|(\[)|(\])|(!)|(#))/
test_value.gsub!(SPEC_REGEXP,'\\\\\1')
于 2012-04-20T09:32:25.607 回答
1

这与 soundar 的解决方案中的想法几乎相同(但使用字符类且不捕获):

"asd;;%$@#!G'{}[]".gsub(/[;&|><*?`$(){}\[\]!#]/, '\\\\\\0')
于 2012-04-20T09:47:32.453 回答