Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby “逃跑”$&引用;使用gsub()_Ruby_Regex - Fatal编程技术网

Ruby “逃跑”$&引用;使用gsub()

Ruby “逃跑”$&引用;使用gsub(),ruby,regex,Ruby,Regex,我正在尝试将字符串中前面的“$”替换为“\$”。例如,“$5特价”应该变成“\$5特价” 我试过: "$5 special".gsub(/^\$/, "\$") => "$5 special" "$5 special".gsub(/^\$/, "\\$") => "\\$5 special" "$5 special".gsub(/^\$/, "\\\$") => "\\$5 special" 有人知道怎么做吗?你的第二个例子 "$5 special".gsub(/^\

我正在尝试将字符串中前面的“
$
”替换为“
\$
”。例如,“
$5特价
”应该变成“
\$5特价

我试过:

"$5 special".gsub(/^\$/, "\$") => "$5 special"  
"$5 special".gsub(/^\$/, "\\$") => "\\$5 special"  
"$5 special".gsub(/^\$/, "\\\$") => "\\$5 special"
有人知道怎么做吗?

你的第二个例子

"$5 special".gsub(/^\$/, "\\$")
我应该这样做。输出中出现两个斜杠的原因是Ruby将字符串中的斜杠转义为文本打印。如果将其打印到标准输出,您将看到它是您所期望的:

irb(main):009:0> a = "$5 special".gsub(/^\$/, "\\$")
=> "\\$5 special"
irb(main):011:0> print a
\$5 special=> nil

只需使用单引号进行替换:

>> "$5 special".gsub(/^\$/, '\$') #=> "\\$5 special"
>> puts "$5 special".gsub(/^\$/, '\$') #=> nil
\$5 special

gsub
也可以接受字符串,在这种情况下,您不必转义
$

"$5 special".gsub("$", '\$') #=> "\\$5 special"