2010-07-02 38 views
18

在一個ruby字符串中,如何每X個字符插入一個空格?Ruby:每X個字符插入一個空格

作爲一個例子,我想插入一個給定字符串的每8個字符的空格。

+0

可能重複[如何在Ruby中每四個整數之間創建空格?](http://stackoverflow.com/questions/3053328/how-do-i-create-spaces-between-every-four-integers在紅寶石) – 2010-07-03 01:22:49

回答

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

編輯:你可以使用正向前查找,以避免在年底增加一個額外的空間:

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

關閉。每8個字符怎麼樣,但不要在字符串的末尾添加空格? – Shpigford 2010-07-02 18:45:50

+3

只需添加一個「strip!」。所以它會變成's.gsub(/(。{8})/,'\ 1').strip!' – 2010-07-02 18:48:15

+1

如果字符串最初有前導或尾隨空格怎麼辦? – Nabb 2010-07-02 18:48:56

16

替代的解決方案:

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

String#scan意志大塊它爲你(分成8個字符的區間 - 除了最後一個區塊,可能會更短),然後Array#join將重新組合塊wi散佈適當的人物。

相關問題