如何制作一个方法来分割数组中的两个字符串?

时间:2015-05-29 19:23:27

标签: ruby

我试图将数组中的两个字符串返回单个单词:

list = ['hello my name is ryan', 'hole me llamo']
def splitter(inp)
  inp.each.split(' ')
end

print splitter(list)

返回:

ruby splitter.rb
splitter.rb:4:in `splitter': undefined method `strsplit' for # <Enumerator: ["hello my name is ryan", "hole me llamo"]:each> (NoMethodError)
from splitter.rb:7:in `<main>'

如果我不使用.each并使用inp(0)inp(1)但只返回一个字符串,则此功能正常。

如何才能返回两个字符串?

2 个答案:

答案 0 :(得分:2)

这是你应该做的:

def splitter(inp)
  inp.flat_map(&:split)
end
splitter list
# => ["hello", "my", "name", "is", "ryan", "hole", "me", "llamo"]

在您的代码中inp.each实际上是一个类似Array#each的方法调用,没有会给出EnumeratorString#spilt确实存在,但没有类似Enumerator#split的方法,这就是 NoMethod 错误爆发的原因。

如果你想要每个字符串的单词数组,那么

def splitter(inp)
  inp.map(&:split)
end
splitter list
# => [["hello", "my", "name", "is", "ryan"], ["hole", "me", "llamo"]]

答案 1 :(得分:0)

如果我正确理解了这个问题,那就是:

list = ['hello my name is ryan', 'hole me llamo']

list.join(' ').split
  #=> ["hello", "my", "name", "is", "ryan", "hole", "me", "llamo"]