如何拆分已拆分的数组ruby

时间:2017-09-20 14:59:07

标签: ruby

我在Ruby中有这个功能

def translate word  
  vowels=["a","e","I","O","U"]  
  i=1.to_i
  sentense=word.split(" ").to_a     
  puts sentense if sentense.length >=1
  sentense.split("")        
  puts sentense     
end

我有这句话"这是一个测试短语"首先,我想创建一个看起来像这样的数组:

["this","is","a", "test", "phrase"]

然后我想创建另一个数组看起来像: [["t","h","i","s"],["i","s"],["a"],["t","e","s","t"],["p","h","r","a","s","e"]

我试过

sentense=word.split(" ").to_a
new_array=sentense.split("").to_a

但它没有工作

2 个答案:

答案 0 :(得分:6)

您可以使用String#splitEnumerable#mapString#chars

p "this is a test phrase".split.map(&:chars)
# => [["t", "h", "i", "s"], ["i", "s"], ["a"], ["t", "e", "s", "t"], ["p", "h", "r", "a", "s", "e"]]

string.split(' ')可以写成string.split,因此您可以省略在括号中传递空格。

这也为你提供了一个数组,没有必要使用to_a,你将拥有像["this", "is", "a", "test", "phrase"]这样的数组,所以你可以使用map来获取一个新的数组,并为每个内部的元素使用.split('').chars来填充字符数组。

答案 1 :(得分:1)

def chop_up(str)
  str.strip.each_char.with_object([[]]) { |c,a| c == ' ' ? (a << []) : a.last << c }
end

chop_up "fee fi fo fum"
  #=> [["f", "e", "e"], ["f", "i"], ["f", "o"], ["f", "u", "m"]]
chop_up " fee fi fo fum "
  #=> [["f", "e", "e"], ["f", "i"], ["f", "o"], ["f", "u", "m"]]
chop_up "feefifofum "
  #=> [["f", "e", "e", "f", "i", "f", "o", "f", "u", "m"]]
chop_up ""
  #=> [[]]