7

私はRubyを初めて使用し、Neighborly氏のHumble LittleRubyGuideを順調に進めてきました。途中でコード例にいくつかのタイプミスがありましたが、私はいつも何が悪いのかを解明し、その後それを修正することができました-今まで!

これは本当に基本的なことですが、Mac OS X(Snow Leopard)で動作する次の例を取得できません。

gone = "Got gone fool!"
puts "Original: " + gone
gone.delete!("o", "r-v")
puts "deleted: " + gone

私が期待している出力は次のとおりです。

Original: Got gone fool!
deleted: G gne fl!

私が実際に得る出力は次のとおりです。

Original: Got gone fool!
deleted: Got gone fool!

削除!メソッドは効果がなかったようです。

誰かがここで何が悪いのかを明らかにすることができますか?:-\

4

3 に答える 3

11

String.deleteメソッド(ここに記載)は、引数を配列として扱い、配列の共通部分に基づいて文字を削除します。

2つの配列の共通部分は、両方の配列に共通するすべての文字です。したがって、の元の削除は次のgone.delete!("o", "r-v")ようになります

gone.delete ['o'] & ['r','s','t','u','v']

両方の配列に文字が存在しないため、削除すると空の配列が取得されるため、文字は削除されません。

于 2010-04-25T10:11:57.130 に答える
2

私が変更され

gone.delete!("o", "r-v")

gone.delete!("or-v")

そしてそれはうまくいきます。

于 2010-04-25T07:46:55.023 に答える
1

gsubのような別の方法を使用して同じo/pを取得します

puts "deleted: " + gone.gsub('o', '')

o / p

deleted: Got gone fool!
于 2010-04-25T07:25:59.710 に答える