我试图用“\$
”替换字符串中前面的“$
”。例如,“$5 special
”应该变成“\$5 special
”。
我已经试过:
"$5 special".gsub(/^\$/, "\$") => "$5 special"
"$5 special".gsub(/^\$/, "\\$") => "\\$5 special"
"$5 special".gsub(/^\$/, "\\\$") => "\\$5 special"
任何人都知道如何做到这一点?
我试图用“\$
”替换字符串中前面的“$
”。例如,“$5 special
”应该变成“\$5 special
”。
我已经试过:
"$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"