положить перечисление с пробелами в коллекцию рельсов - PullRequest
1 голос
/ 26 апреля 2011
irb(main):001:0> t = %w{this is a test}
=> ["this", "is", "a", "test"]
irb(main):002:0> t.size
=> 4
irb(main):003:0> t = %w{"this is" a test}
=> ["\"this", "is\"", "a", "test"]
irb(main):004:0> t.size
=> 4

В итоге я ожидал, что t.size будет равно 3.

Как и предполагалось, каждый пробел должен быть экранирован ... что оказывается большой работой.Какие еще есть варианты?У меня есть список из примерно 30 слов, которые мне нужно добавить в коллекцию, потому что я показываю их как флажки, используя simple_form

Ответы [ 6 ]

2 голосов
/ 26 апреля 2011

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

t = [
    'this is',
    'a',
    'test'
]

, и люди, поддерживающие ваш код, не будут ненавидеть вас за использование %w{}, когда он не подходит или когда они что-то испортили, потому что не увидели, что вы сбежалипробельные.

2 голосов
/ 26 апреля 2011

Вам нужно выйти из пробела с помощью '\', например t = %w{this\ is a test}, если вы не хотите, чтобы этот пробел был разделителем.

0 голосов
/ 26 апреля 2011
require 'csv'
str = '"this is" a test'
p CSV.parse_line(str,{:col_sep=>' '})
#=> ["this is", "a", "test"]
0 голосов
/ 26 апреля 2011

Как уже отмечали другие, используйте конструкцию %w{}, когда пробел является разделителем для слов.Если у вас есть предметы, которые должны быть в кавычках, и вы все еще хотите использовать конструкцию, вы можете сделать:

 > %w{a test here}.unshift("This is")  
 => ["This is", "a", "test", "here"] 
0 голосов
/ 26 апреля 2011

Вы можете выйти из пробела %w{this\ is a test}, чтобы получить ['this is', 'a', 'test'], но в целом я бы не стал использовать %w, если только тогда не планируется разделить пробел.

0 голосов
/ 26 апреля 2011

Выйти из пространства, используя \:

%w{this\ is a test}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...