2012-10-19 14 views
13

Korzystanie %W mogę używać %W[a #{} b #{} c], również mogę łączyć macierze, ale jest to możliwe, aby utworzyć tablicę ['a', '', 'b', '', 'c'] używając tylko %w[]?Utwórz tablicę z użyciem pusty ciąg% wag []

+5

nie. % w [] nie ma możliwości reprezentowania ciągu zerowego jako elementu. – dbenhur

+0

Zobacz również http://stackoverflow.com/questions/4064062/space-in-the-ruby-array-by-w (tam wyniki zawierają spację - więc to jest podobna sytuacja, nie to samo) – knut

+0

@nutnut : Wiem o ucieczce przestrzeni, ale to nie jest to, co chcę – tig

Odpowiedz

0

Można użyć

%w[a \ b \ c].map(&:strip) 

, ale myślę, że to nie jest bardzo czysty.

14

Kilka opcji

%W[a b C#{''} z]

%W[a b c] << " "

(wiem, że to nie jest przy użyciu składni %w{}, ale na wszelki wypadek:

'a,b,c,,z'.split(',')

+0

pierwsza opcja podana tutaj jest najlepsza IMO. należy zaznaczyć poprawną odpowiedź – sixty4bit

+0

to również działa:% W {} – user2340939

-1

spróbuj użyć % W zamiast% w i użyj znaku escape \ s dla pustego ciągu znaków

%W[a \s b ] 
+1

'% W [a \ sb]' daje '['a', '', 'b']' zamiast '['a', '' , 'b'] ' – tig

+0

możesz użyć% W [a # {" "} b] lub% W [a # {String.new} b] lub% W [a # {} b], ale nie mogłem znajdź jakiś sposób, aby uzyskać pusty ciąg znaków za pomocą% w – RubyMiner

+0

, co może pomóc. % w [a b] .insert (1, nil.to_s) – RubyMiner