2015-10-28 6 views
1

Например, эти две линии, которые идентичны, кроме разделителя, возвращают разные массивы.Почему операции разложения ruby ​​с разделителями пространства возвращают разные значения?

"1,2,,3,4,,".split(',') 
=> ["1", "2", "", "3", "4"] 
"1 2 3 4 ".split(' ') 
=> ["1", "2", "3", "4"] 
+0

Более конкретно, как я могу разделить на пробелы и получить первый массив вернулся? –

ответ

1

В зависимости от того, что вы ищете, вы можете пройти в пустую строку:

'1 2 3 4 '.split('') 
# => ["1", " ", "2", " ", " ", "3", " ", "4", " ", " "] 

Или использовать регулярное выражение:

'1 2 3 4 '.split(/\s/) 
# => ["1", "2", "", "3", "4"] 
1

Поскольку один пробел передается методу String#split имеет особое значение.

От the docs:

Если шаблон является строка, то его содержимое используется в качестве разделителя при расщеплении ул. Если шаблон представляет собой одиночное пространство, str разбивается на пробелы, причем ведущие пробелы и пробелы смежных символов пробелов игнорируются.

+0

Как я могу сделать смежные пробелы не игнорируемыми? –

+0

Получение конечных пробелов сложно. Посмотрите, если регулярное выражение '/ \ s /' или пустая строка '' '' дают вам то, что вы хотите. – tompave