0

それよりも

str.downcase!
str.gsub!(/\W/, "")

複数の破壊的なStringメソッドを連続して使用できるはずです。

str.downcase!.gsub!(/W/, "")

これが機能する場合もありますが、エラーが発生する場合もあります。

irb(main):001:0> str = "Foobar!"
"Foobar!"
irb(main):002:0> str.downcase!.gsub!(/\W/, "")
"foobar"
irb(main):003:0> str
"foobar"
irb(main):004:0> str.downcase!.gsub!(/\W/, "")
NoMethodError: undefined method `gsub!' for nil:NilClass
    from (irb):4
    from /usr/bin/irb:12:in `<main>'

どうしてこれなの?

4

1 に答える 1

1

を含む多くの破壊的なメソッドは、何も変更しない場合にgsub戻ります。nilしたがって、通常、それらをチェーンすることはお勧めできません。代わりに使用する

str.downcase!
str.gsub!(/\W/, "")

また

str = str.downcase.gsub(/\W/, "")
于 2013-01-21T06:46:08.563 に答える