/ / Come creare un metodo per suddividere due stringhe in un array? - rubino

Come creare un metodo per suddividere due stringhe in un array? - rubino

Sto cercando di restituire due stringhe in un array in singole parole:

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

print splitter(list)

Questo restituisce:

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>"

Funziona se non lo uso .each e usare inp(0) o inp(1) ma viene restituita solo una stringa.

Come posso ottenere che entrambe le stringhe vengano restituite?

risposte:

2 per risposta № 1

Ecco uno che dovresti fare:

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

Nel tuo codice inp.each era in realtà una chiamata al metodo come Array#each, che senza a bloccare dà un Enumerator. E String#spilt esiste, ma non c'è metodo come Enumerator#split, Ecco perchè NoMethod l'errore esplode.

E se vuoi la matrice di parole per ogni singola stringa, allora

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

0 per risposta № 2

Se capisco correttamente la domanda, è solo:

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

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