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!但我想一步完成所有这些。是否可以?

使用my_array.delete!(" ").downcase!.split!(//)产量“':未定义的方法'split!' 对于 nil:NilClass",所以我认为.split!它不存在。

4

4 回答 4

3

不。如果您阅读文档,您会发现破坏性方法nil在没有任何更改时会返回,因此您不能将它们链接起来。如果要将字符串更改为不包括 whitespces 的字母数组,您应该运行:

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

也不存在破坏性的方法split!。它怎么可能存在?Ruby 是强类型语言,因此您无法更改String为强类型语言,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 回答
1

为什么不使用 split 与匹配空格的正则表达式或什么都不匹配?

"Foo bar na nas".downcase.split(/\s*/).uniq

这返回

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

split!不存在,因为按照约定方法!在 ruby​​ 中更改对象本身,并且您不能将字符串强制转换为数组,因为 ruby​​ 是强类型的。

于 2013-04-09T18:58:00.353 回答