Вопрос

Довольно простой вопрос от начинающего программиста Ruby.

Как перебрать фрагмент текста в Ruby?Каждый раз, когда встречается новая строка, я хочу перезапустить внутренний цикл.

def parse(input)
    ...
end
Это было полезно?

Решение

Строка#each_line

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

Я думаю, что это должно позаботиться о новых строках.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top