我有一个字符串
string = '1234432198766789'
我希望它看起来像这样:
"1234 4321 9876 6789"
最好的方法是什么?我能够使用Rails的字符串扩展。
我不想修改原始字符串,因此无法使用insert
方法。
答案 0 :(得分:4)
长版:
string.split("").in_groups_of(4).map { |s| s.join("") }.join(" ")
这应该是某种电话号码吗? Rails有一个number_to_phone
helper that you could use。
答案 1 :(得分:4)
p '12345678'.reverse.scan(/.{1,4}/).join(' ').reverse
# => "1234 5678"
为什么双reverse
?因此,当字符串的长度不是4的倍数时,奇数大小的组将位于左侧:
p '123456'.reverse.scan(/.{1,4}/).join(' ').reverse
# => "12 3456"
如果您知道您的字符串将始终是四的倍数,或者如果您不介意奇数大小的组位于右侧,则忽略对reverse
的两次调用。
p '123456'.scan(/.{1,4}/).join(' ')
# => "1234 56"
答案 2 :(得分:1)
另一种解决方案:
string.scan(/.{1,4}/).join(' ')
P.S。 Ryan的解决方案有可能随着string.split('')
改变string.chars.to_a
,如果你不得不做i18n的话。这可能是一场噩梦...