Подтвердить что ты не робот

Как разбить строку и пропустить пробелы?

У меня есть строка типа " This is a test ". Я хочу разбить строку на символ пробела. Я делаю это так:

puts " This   is a test ".strip.each(' ') {|s| puts s.strip}

Результат:

Это

является

тест
Это тест

Почему существует последняя строка "This is a test"? И мне нужно, чтобы, если между двумя словами есть два или более пробела, это не должно возвращать "строку".

Я хочу только получить слова, разделенные на заданную строку. У кого-нибудь есть идея?

4b9b3361

Ответ 1

irb(main):002:0> " This   is a test ".split
=> ["This", "is", "a", "test"]

irb(main):016:0* puts " This   is a test ".split
This
is
a
test

str.split(pattern = $;, [limit]) = > anArray

Если шаблон опущен, значение $; используется. Если $; nil (это default), str разделяется на пробелы как будто `были указаны.

Ответ 2

Вы должны сделать

" This   is a test ".strip.each(' ') {|s| puts s.strip}

Если вы не хотите, чтобы последний "это тест"

Поскольку

irb>>> puts " This   is a test ".strip.each(' ') {}
This   is a test

Ответ 3

Первая команда "puts" будет помещена после исключения каждого блока. опустите первый "puts" и вы закончите