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

Diceです。

12 messages 2009/06/16

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

From: Dan Yamamoto <dan@...>
Date: 2009-06-18 01:41:51 UTC
List: ruby-list #46102
だんです。

> ついでに: gsub! を使えば元の文字列の破壊的置換ができ
> ますが,置換すべき文字列がない場合には nil が返るので,
> 上のように自己代入的な書き方にしています。あんまり
> スマートではないのですが,次のようなのもいまいちですよね。
>
> s.gsub!(s1,s2) if s.index(s1)
>
> せっかくの破壊的置換が使いにくいというのは残念に思うの
> ですが・・・

gsub!は置換が起こらなかった場合にnilを返しますが、
その場合、レシーバの文字列までnilしてしまうわけではありません。
もしgsub!で置換が起こらなかった場合、文字列はそのままです。
よって次のように書いて大丈夫です。

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

In This Thread