Как разбить строку и пропустить пробел? - PullRequest
12 голосов
/ 05 января 2010

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

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

Результат:

Это

есть
а
тест
Это тест

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

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

Ответы [ 3 ]

41 голосов
/ 05 января 2010
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

Если шаблон опущен, значение $; используется. Если $; ноль (который является по умолчанию), str разделяется на пробелы как будто `’ были указаны.

2 голосов
/ 05 января 2010

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

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

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

Потому что

irb>>> puts " This   is a test ".strip.each(' ') {}
This   is a test
1 голос
/ 05 января 2010

Первая команда "put" будет put после того, как будет выполнен каждый блок. пропустите первые «путы» и все готово

...