2010-07-02 41 views
18

Trong chuỗi ruby, làm thế nào tôi có thể chèn một dấu cách vào mỗi số ký tự X?Ruby: Chèn dấu cách mỗi số ký tự X

Ví dụ: tôi muốn chèn khoảng trắng 8 ký tự của một chuỗi nhất định.

+0

bản sao có thể có của [Làm cách nào để tạo khoảng trắng giữa mỗi bốn số nguyên trong Ruby?] (Http://stackoverflow.com/questions/3053328/how-do-i-create-spaces-between-every-four-integers -in-ruby) –

Trả lời

22
>> s = "1234567812345678123456781234567812345678" 
=> "1234567812345678123456781234567812345678" 
>> s.gsub(/(.{8})/, '\1 ') 
=> "12345678 12345678 12345678 12345678 12345678 " 

Edit: Bạn có thể sử dụng lookahead tích cực để tránh thêm một không gian thêm ở cuối:

>> s.gsub(/(.{8})(?=.)/, '\1 \2') 
=> "12345678 12345678 12345678 12345678 12345678" 
+0

Đóng. Điều gì về mỗi 8 ký tự, nhưng không thêm một không gian ở cuối chuỗi? – Shpigford

+3

chỉ cần thêm một 'dải! '. do đó, nó sẽ biến thành 's.gsub (/ (. {8}) /, '\ 1') .strip!' –

+1

Nếu chuỗi ban đầu có dấu cách đầu hoặc cuối? – Nabb

16

giải pháp thay thế:

s.scan(/.{1,8}/).join(' ') 

String#scan ý đoạn nó lên cho bạn (vào khoảng 8 ký tự - ngoại trừ đoạn cuối cùng, có thể ngắn hơn), và sau đó Array#join sẽ đoàn tụ các khối dữ liệu th nhân vật thích hợp xen kẽ.

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