2010-07-02 21 views
18

Bir ruby ​​dizesinde, her X karakter karakterine nasıl boşluk ekleyebilirim?Ruby: Her X karakter karakterini boşluklara yerleştirin

Örnek olarak, verilen bir dizenin her 8 karakterinden bir boşluk eklemek istiyorum.

+0

olası yinelenen [Ruby'de her dört tamsayı arasında nasıl boşluk oluşturabilirim?] (Http://stackoverflow.com/questions/3053328/how-do-i-create-spaces-between-every-four-integers -in-ruby) –

cevap

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

Düzenleme: Sen sonunda fazladan bir boşluk eklemekten kaçının pozitif ileri yönlü kullanabilirsiniz:

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

Close. Her 8 karakterden ne dersiniz, ancak dizenin sonuna boşluk eklemeyin? – Shpigford

+3

sadece bir şerit ekleyin! böylece s.gsub (/ (. {8}) /, '\ 1') .strip'e dönecekti! ' –

+1

Dize başlangıçta baştan sona mi yoksa boşluk mu? – Nabb

16

Alternatif çözüm: sizin için

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

String#scan irade yığın it up (8 karakterden oluşan açıklıklara (daha kısa olabilen son parça hariç) ve daha sonra Array#join parçalarını yeniden birleştirecek Uygun karakter serpiştirilmiş.

İlgili konular