[#46093] 質問:mingw環境でのtcltklib.soのコンパイル — Dice <rubyist@...>

Diceです。

12 messages 2009/06/16

[ruby-list:46098] gsub における '&' の挙動

From: "Hideo Konami" <konami@...>
Date: 2009-06-17 23:01:24 UTC
List: ruby-list #46098
小波です。

テキスト中の記号を置換しようとしていて,'&'の振る舞いが他の
記号と異なることに気がつきました。困るのはもちろんですが,訳
が分からないのはもっと気持ちが悪いです。どなたか解決策と
理由を教えていただけないでしょうか。

ソース
s = "abc_def  &ghi 125$"
s = s.gsub('_','\_')
p s
s = s.gsub('$','\$')
p s
s = s.gsub('&','\&')
p s

結果
"abc\\_def  &ghi 125$"
"abc\\_def  &ghi 125\\$"
"abc\\_def  &ghi 125\\$"

ついでに: gsub! を使えば元の文字列の破壊的置換ができ
ますが,置換すべき文字列がない場合には nil が返るので,
上のように自己代入的な書き方にしています。あんまり
スマートではないのですが,次のようなのもいまいちですよね。

s.gsub!(s1,s2) if s.index(s1)

せっかくの破壊的置換が使いにくいというのは残念に思うの
ですが・・・ 






In This Thread

Prev Next