[#46052] プログラミングRuby第2版 言語編 p26、p29サンプルソースについて — eiichi_maekawa@...
4 messages
2009/06/04
[#46067] [SECURITY] Ruby 1.8.7-p173 released — Urabe Shyouhei <shyouhei@...>
Hello all. This is a security fix for ruby 1.8.7.
10 messages
2009/06/10
[#46073] Re: [SECURITY] Ruby 1.8.7-p173 released
— Tadashi Saito <shiba@...2.accsnet.ne.jp>
2009/06/10
斎藤と申します。
[#46069] RubyForgeにアクセスできません — 鈴木 豊 <yutaka_suzuki@...>
こんにちは。 鈴木と申します。
5 messages
2009/06/10
[#46084] RoR での日本語コ−ド指定方法 — しん <dezawa@...>
出沢@RoR挑戦中
8 messages
2009/06/13
[#46093] 質問:mingw環境でのtcltklib.soのコンパイル — Dice <rubyist@...>
Diceです。
12 messages
2009/06/16
[#46108] Re: 質問:mingw環境でのtcltklib.soのコンパイル
— Hidetoshi NAGAI <nagai@...>
2009/06/19
永井@知能.九工大です.
[#46110] Re: 質問:mingw環境でのtcltklib.soのコンパイル
— dice <rubyist@...>
2009/06/19
Diceです。
[#46111] Re: 質問:mingw環境でのtcltklib.soのコンパイル
— Hidetoshi NAGAI <nagai@...>
2009/06/19
永井@知能.九工大です.
[#46099] Re: _[ruby-list:46098 ]_gsub_における_'&'__の挙動 — 遠藤 明 <endo4917@...>
遠藤です。
1 message
2009/06/17
[ruby-list:46103] Re: gsub における '&' の挙動
From:
KIMURA Koichi <kimura.koichi@...>
Date:
2009-06-18 01:57:35 UTC
List:
ruby-list #46103
木村です。
すでに解決しているところですが
On Thu, 18 Jun 2009 08:01:24 +0900
"Hideo Konami" <konami@kyoto-wu.ac.jp> wrote:
> 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\\$"
行末(文字列末尾)だけ特別扱いになってしまいますが、同じような置換を
複数回行うのであればこういうやり方もあるということで。
irb(main):001:0> s.gsub(/[_&]|\z/, '\\\\\\&')
=> "abc\\_def \\&ghi 125\\"
もっともさすがにこれは '\' がうるさすぎるのでブロックを使って
irb(main):002:0> s.gsub(/[_&]|\z/){ '\\' + $& }
=> "abc\\_def \\&ghi 125\\"
でしょうか。
> ついでに: gsub! を使えば元の文字列の破壊的置換ができ
> ますが,置換すべき文字列がない場合には nil が返るので,
> 上のように自己代入的な書き方にしています。あんまり
> スマートではないのですが,次のようなのもいまいちですよね。
>
> s.gsub!(s1,s2) if s.index(s1)
>
> せっかくの破壊的置換が使いにくいというのは残念に思うの
> ですが・・・
gsub! をメソッドチェーンの中においても問題なく使えるようにしてほしい
というのは何度となく挙げられる要望ですが、採用に至ったことはないですね。
ただ、上記の例では index を使う意味がないような。
置換が行われなかったときのgsub! の戻り値が nil になるだけであって、
対象文字列そのものが nil とか空文字列になるわけではないですから。
irb(main):003:0> s = '123'
=> "123"
irb(main):004:0> s.gsub!(/[A-Z]/, '*')
=> nil
irb(main):005:0> s
=> "123"
irb(main):006:0> s.gsub!(/\d/, '*')
=> "***"
irb(main):007:0> s
=> "***"
--
木村浩一