2011-09-07 45 views
8

Làm cách nào để xóa các dòng trống khỏi chuỗi? Tôi đã thử some_string = some_string.gsub (/^$ /, "");Ruby xóa các dòng trống khỏi chuỗi

và hơn thế nữa, nhưng không có gì hiệu quả.

+0

thể trùng lặp của [Ruby: Trim dòng trống mới] (http://stackoverflow.com/questions/1040390/ruby-trim-new-blank-lines) – bragboy

+2

nó không phải là một trùng lặp. tiêu đề đó * rất * gây hiểu lầm –

Trả lời

20

Hủy bỏ dòng trống:

str.gsub /^$\n/, '' 

Lưu ý: không giống như một số các giải pháp khác, điều này thực sự loại bỏ các dòng trống và không ngắt dòng :)

>> a = "a\n\nb\n" 
=> "a\n\nb\n" 
>> a.gsub /^$\n/, '' 
=> "a\nb\n" 

Giải thích: phù hợp với sự bắt đầu ^ và kết thúc $ của một dòng không có gì ở giữa, theo sau là ngắt dòng. (! Hoặc ép):

Alternative, rõ ràng hơn (mặc dù ít thanh lịch) giải pháp

str.each_line.reject{|x| x.strip == ""}.join 
0

Nguyên

some_string = some_string.gsub(/\n/,'') 

Cập nhật

some_string = some_string.gsub(/^$\n/,'') 
+1

không, điều này sẽ xóa tất cả các dòng mới khỏi chuỗi –

4

Thay thế nhiều dòng mới với một duy nhất:

fixedstr = str.gsub(/\n\n+/, "\n") 

hoặc

str.gsub!(/\n\n+/, "\n") 
3

Bạn có thể thử để thay thế tất cả các lần xuất hiện của 2 hoặc dòng hơn phá vỡ chỉ với một cú:

my_string.gsub(/\n{2,}/, '\n') 
10

bóp làm điều đó - mà không có một regex.

str.squeeze("\n") 
Các vấn đề liên quan