0

これまでのところ、私は持っています:

my_array = "Foo bar na nas"
my_array.delete!(" ").downcase!
my_array = my_array.split(//).uniq

取得するため:

==> ["f", "o", "b", "a", "r", "n", "s"]

.split!(//)like.delete!またはを使用できないようですが.downcase!、これらすべてを 1 つのステップで実行したいと考えています。出来ますか?

利回りの使用my_array.delete!(" ").downcase!.split!(//)"': 未定義のメソッド 'split!' for nil:NilClass」なので、.split!存在しないと思います。

4

4 に答える 4

3

いいえ。ドキュメントを読むと、変更するものが何もないときに破壊的なメソッドが返さnilれるため、それらを連鎖させることはできません。文字列を空白を除く文字の配列に変更したい場合は、以下を実行する必要があります。

my_array = "Foo bar na nas".downcase.gsub(/\W/, '').split(//).uniq

破壊的なメソッドも存在しませんsplit!。どうして存在できるのでしょうか?StringRuby は強い型付けの言語なので、関係がないため変更できませんArray

于 2013-04-09T18:44:43.230 に答える
2

my_array.downcase.gsub(' ','').chars.uniq

于 2013-04-09T18:34:41.623 に答える
1
"Foo bar na nas".downcase.split(//).uniq.keep_if { |item| item != " " }
#=> ["f", "o", "b", "a", "r", "n", "s"]

"Foo bar na nas  t  p".downcase.split(//).uniq.keep_if { |item| item != " " }
#=> ["f", "o", "b", "a", "r", "n", "s", "t", "p"]
于 2013-04-09T18:29:54.997 に答える