Как перебрать многострочную строку в Ruby?
-
03-07-2019 - |
Вопрос
Довольно простой вопрос от начинающего программиста 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
Я думаю, что это должно позаботиться о новых строках.