¿Cómo recorrer una cadena multilínea en Ruby?
-
03-07-2019 - |
Pregunta
Pregunta bastante simple de un programador Ruby por primera vez.
¿Cómo recorres una losa de texto en Ruby? Cada vez que se encuentra una nueva línea, quiero reiniciar el bucle interno.
def parse(input)
...
end
Solución
str.each_line do |line|
#do something with line
end
Otros consejos
Lo que dijo Iraimbilanja.
O podría dividir la cadena en nuevas líneas:
str.split(/\r?\n|\r/).each { |line| … }
Tenga en cuenta que each_line
mantiene los caracteres de avance de línea, mientras que split
los come.
Tenga en cuenta que la expresión regular que utilicé aquí se encargará de los tres formatos de final de línea. String # each_line
separa las líneas por el argumento opcional sep_string
, que por defecto es $ /
, que por defecto es " \ n "
simplemente.
Por último, si desea realizar un análisis de cadenas más complejo, consulte la clase StringScanner incorporada.
También puedes hacerlo con cualquier patrón:
str.scan(/\w+/) do |w|
#do something
end
str.each_line.chomp do |line|
# do something with a clean line without line feed characters
end
Creo que esto debería ocuparse de las nuevas líneas.