2011-07-04 2 views

答えて

9

あなたのリンクの質問は、ソリューションを提供 - gsubのブロック形式を使用します。

irb(main):009:0> puts "asdf & asdf".gsub("&"){'\&'} 
asdf \& asdf 
+0

これは&のためにはうまくいくかもしれませんが、 ' –

+0

'の場合は正しくありません。実際、置換文字列は ''で区切られています。 'puts 'asdf' asdf" .gsub( "'"){"\\'"} ' – Chowlett

+0

ライフセーバー!ありがとうたくさんの –

1
ruby-1.9.2-p180 :008 > puts "asdf & asdf".gsub(/&/, '\\\&') 
asdf \& asdf 
+0

これは混乱ではありません。 'puts'がなければ、' result.inspect'を得ています。文字列の場合は、 'result'を得るために文字列を二重引用符で打つ必要があります。 –

2

私はあなたが1.8を使用していることを推測するつもりです。 1.8では、irbはこれを言っています:

>> "asdf & asdf".gsub("&", "\\\&") 
=> "asdf & asdf" 
>> puts "asdf & asdf".gsub("&", "\\\&") 
asdf & asdf 

これはあなたが見ているものと一致します。後しかし、あなたはまだ別のバックスラッシュを追加した場合、あなたがしているものを手に入れることは:四重バックスラッシュのアプローチは、1.9.2と1.8.7の両方で私のために同じ単独でエスケープアンパサンドを生成

>> puts "asdf & asdf".gsub("&", '\\\\&') 
asdf \& asdf 

ので、それを上げます4人に(11人ではなく、4人だけが行う)。

関連する問題