2010-01-05 36 views
12

Tôi có một chuỗi như " This is a test ". Tôi muốn chia chuỗi bằng ký tự khoảng trắng. Tôi làm điều đó như thế này:Làm cách nào để chia chuỗi và bỏ qua khoảng trắng?

puts " This is a test ".strip.each(' ') {|s| puts s.strip} 

Kết quả là:

này


một
kiểm tra
Đây là một thử nghiệm

Tại sao lại có dòng cuối cùng "This is a test"? Và tôi cần, rằng nếu có hai hoặc nhiều ký tự khoảng trắng giữa hai từ, thì điều này sẽ không trả về "hàng".

Tôi chỉ muốn nhận các từ được tách ra trong một chuỗi nhất định.
Có ai có ý tưởng không?

Trả lời

41
irb(main):002:0> " This is a test ".split 
=> ["This", "is", "a", "test"] 

irb(main):016:0* puts " This is a test ".split 
This 
is 
a 
test 

str.split(pattern=$;, [limit]) => anArray

Nếu mẫu được bỏ qua, giá trị của $; được sử dụng. Nếu $; là nil (mặc định là ), str được chia thành khoảng trắng như thể đã được chỉ định.

+3

"Đây là một thử nghiệm" .split – khelll

2

Bạn nên làm

" This is a test ".strip.each(' ') {|s| puts s.strip} 

Nếu bạn không muốn cuối cùng "này là một thử nghiệm"

irb>>> puts " This is a test ".strip.each(' ') {} 
This is a test 
1

Lệnh đầu tiên "đặt" sẽ là đặt sau khi mỗi khối bị xử lý. bỏ qua "đặt" đầu tiên và bạn đã hoàn tất

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