From: Koji Arai Date: 2003-06-08T19:47:27+09:00 Subject: [ruby-dev:20336] Re: 1.8 gsub 新井です。 In message "[ruby-dev:20335] 1.8 gsub" on 08 Jun 2003 15:52:39 +0900, "H.Suzuki" wrote: > hsuzu といいます。 > > ruby 1.8 で ' '.gsub(' ', '') を実行すると > > warning: string pattern instead of regexp; metacharacters no longer > effective > > という warning がでます。1.6 のときは出なかったのですが、この warning を > 出ないようにするにはどうすればよいでしょうか。gsub(/ /, '')というのは無 > しで。 str.gsub(patstr, repl) は、 str.gsub(Regexp.compile(Regexp.quote(patstr)), repl) という動作をしますので、このように書けば良いです。1.6 のころは str.gsub(Regexp.compile(patstr), repl) という動作だったので、意図によってはこのように書いた方が良い かもしれません。warning はこの仕様変更に対する警告です。 # スペースで警告が出るのは変と言える? # # p Regexp.quote(' ') # => "\\ " ただ、示されている例では、なぜ、gsub(/ /, '') ではダメなのか 理由がわかりません。正規表現リテラルで指定しないと常に正規表 現コンパイルが発生して処理の無駄だったりしますが、それでも文 字列で指定したい理由があるのでしょうか? -- 新井康司 (Koji Arai)