到目前为止,我有:
my_array = "Foo bar na nas"
my_array.delete!(" ").downcase!
my_array = my_array.split(//).uniq
获得:
==> ["f", "o", "b", "a", "r", "n", "s"]
我似乎无法使用像.split!(//)
或.delete!
这样的.downcase!
,但我希望一步完成所有这些操作。有可能吗?
使用my_array.delete!(" ").downcase!.split!(//)
产生“':未定义的方法'拆分!'对于nil:NilClass“所以我认为.split!
不存在。
答案 0 :(得分:3)
没有。如果您将阅读documentation,那么当没有任何变化时,您将获得破坏性方法返回nil
,因此您无法链接它们。如果你想将字符串更改为不包括whitespces的字母数组,那么你应该运行:
my_array = "Foo bar na nas".downcase.gsub(/\W/, '').split(//).uniq
也没有破坏性方法split!
。它是如何存在的? Ruby是强类型语言,因此您可以将String
更改为Array
,因为它们不相关。
答案 1 :(得分:2)
my_array.downcase.gsub(' ','').chars.uniq
答案 2 :(得分: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"]
答案 3 :(得分:1)
为什么不使用带有匹配空格的正则表达式的split或什么都不用?
"Foo bar na nas".downcase.split(/\s*/).uniq
返回
["f", "o", "b", "a", "r", "n", "s"]
split!
不存在,因为使用!
的约定方法会在ruby中更改对象本身,并且您无法将字符串强制转换为数组,因为ruby是强类型的。