2012-10-19 42 views
13

Sử dụng %W Tôi có thể sử dụng %W[a #{} b #{} c], cũng có thể nối các mảng, nhưng có thể tạo mảng ['a', '', 'b', '', 'c'] chỉ bằng %w[] không?Tạo mảng bằng chuỗi rỗng bằng% w []

+5

không. % w [] không có cách nào để biểu diễn chuỗi có độ dài bằng 0 làm phần tử. – dbenhur

+0

Xem thêm http://stackoverflow.com/questions/4064062/space-in-the-ruby-array-by-w (kết quả có chứa khoảng trắng - vì vậy đây là một tình huống tương tự, không giống nhau) – knut

+0

@knut : Tôi biết về không gian thoát, nhưng đó không phải là những gì tôi muốn – tig

Trả lời

0

Bạn có thể sử dụng

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

, nhưng tôi nghĩ rằng nó không phải là rất sạch sẽ.

14

Một vài tùy chọn

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

%W[a b c] << " "

(Tôi biết điều này không được sử dụng cú pháp %w{}, nhưng đối với biện pháp tốt:

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

+0

tùy chọn đầu tiên được đưa ra ở đây là IMO tốt nhất. nên được đánh dấu là câu trả lời đúng – sixty4bit

+0

điều này cũng hoạt động:% W {} – user2340939

-1

hãy thử sử dụng % W thay vì% w và sử dụng ký tự thoát \ s cho chuỗi trống

%W[a \s b ] 
+1

'% W [a \ sb]' cho '['a', '', 'b']' thay vì '['a', '' , 'b'] ' – tig

+0

u có thể sử dụng% W [a # {" "} b] hoặc% W [a # {String.new} b] hoặc% W [a # {} b], nhưng tôi không thể tìm bất kỳ cách nào bạn có thể nhận được một chuỗi rỗng bằng cách sử dụng% w – RubyMiner

+0

điều này có thể hữu ích. % w [a b] .insert (1, nil.to_s) – RubyMiner

Các vấn đề liên quan