Ответ 1
str.each_line do |line|
#do something with line
end
Довольно простой вопрос от первого программиста Ruby.
Как вы просматриваете текст в Ruby? Каждый раз, когда выполняется новая строка, я хочу снова запустить внутренний цикл.
def parse(input)
...
end
str.each_line do |line|
#do something with line
end
То, что сказал Ириимуляня.
Или вы можете разбить строку на новые строки:
str.split(/\r?\n|\r/).each { |line| … }
Остерегайтесь, чтобы each_line
сохранял символы перевода строки, а split
ест их.
Обратите внимание, что регулярное выражение, которое я использовал здесь, позаботится о всех трех форматах окончания строки. String#each_line
разделяет строки необязательным аргументом sep_string
, который по умолчанию равен $/
, который по умолчанию сам по себе равен "\n"
.
Наконец, если вы хотите выполнить более сложный синтаксический анализ строк, проверьте встроенный класс StringScanner.
Вы также можете использовать любой шаблон:
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
Я думаю, что это должно заботиться о новых символах.