2012-10-19 11 views
13

%W Verwendung von I %W[a #{} b #{} c] verwenden kann, kann ich auch Arrays verketten, aber ist es möglich, ['a', '', 'b', '', 'c'] erstellen Array mit nur %w[]?mit leeren String mit% w []

+5

nein. % w [] hat keine Möglichkeit, eine Zeichenfolge mit der Länge null als Element darzustellen. – dbenhur

+0

Siehe auch http://stackoverflow.com/questions/4064062/space-in-the-ruby-array-by-w (dort enthalten die Ergebnisse ein Leerzeichen - so ist es eine ähnliche Situation, nicht das gleiche) – knut

+0

@knut : Ich weiß über Flucht Raum, aber das ist nicht das, was ich will – tig

Antwort

0

können Sie

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

verwenden, aber ich denke, es ist nicht sehr sauber ist.

14

Ein paar Optionen

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

%W[a b c] << " "

(Ich weiß, dass dies nicht die %w{} Syntax verwendet, aber für eine gute Maßnahme:

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

+0

die erste Option hier ist die beste IMO. sollte die richtige Antwort markiert werden – sixty4bit

+0

das funktioniert auch:% W {} – user2340939

-1

versuchen Sie es mit % W anstelle von% w und \ s Escapezeichen für die leere Zeichenfolge

%W[a \s b ] 
+1

'% W [a \ sb]' gibt '['a', '', 'b']' anstelle von '['a', '' , 'b'] ' – tig

+0

Sie können% W [a # {" "} b] oder% W [a # {String.new} b] oder% W [a # {} b] verwenden, aber ich konnte nicht Finden Sie einen Weg, wie Sie eine leere Zeichenfolge mit% w – RubyMiner

+0

erhalten können, das könnte helfen. % w [a b] .insert (1, nil.to_s) – RubyMiner