我想將一個給定的句子轉換成一個陣列陣列,其中每個嵌套陣列由每個單詞的字母組成,這樣“我是狗”就變成了 [["I"], ["a", "m"] , ["a"], ["d", "o", "g"]],例如。
我可以使用 .split(" ") 將句子拆分為單個單詞,并且可以使用 .chars 將單個單詞拆分為字母,但我無法將兩者結合起來。當我先拆分然后迭代時:
sentence.split(" ")
sentence.each { |word| word.chars }
...它只是回傳單詞陣列而不做第二部分。我已經嘗試了這個代碼的幾種不同的變體(使用.each_with_index,或者說“word = word.chars”等等),但就是不能讓它做我想做的事。最好的方法是什么?
uj5u.com熱心網友回復:
您應該使用 Enumerable#map。
sentence.split(" ").map { |word| word.chars }
uj5u.com熱心網友回復:
您可以使用String#scan來避免匹配標點符號:
"Hey, diddle, didle, the cat and the fiddle.".scan(/[a-z] /i).map(&:chars)
#=> [["H", "e", "y"], ["d", "i", "d", "d", "l", "e"], ["d", "i", "d", "l", "e"],
# ["t", "h", "e"], ["c", "a", "t"], ["a", "n", "d"], ["t", "h", "e"],
# ["f", "i", "d", "d", "l", "e"]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/464253.html
