Ruby on rails 在Ruby中,如何在每四个整数之间创建空格?
我正在尝试使用以下号码:Ruby on rails 在Ruby中,如何在每四个整数之间创建空格?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试使用以下号码: 423523420987 并将其转换为: 4235 2342 0987 它也不一定是整数。事实上,我更希望它是一个字符串。通过每个数字循环,如果循环索引mod 4=0,则放置一个空格 您可以与正则表达式一起使用: => 'abcdefghijkl'.gsub(/.{4}(?=.)/, '\0 ') 'abcd efgh ijkl' 如果您正在寻找填充零,以防您的数字少于12个或多于12个,这将帮助您: irb(main):002:0> 42352342
423523420987
并将其转换为:
4235 2342 0987
它也不一定是整数。事实上,我更希望它是一个字符串。通过每个数字循环,如果循环索引mod 4=0,则放置一个空格 您可以与正则表达式一起使用:
=> 'abcdefghijkl'.gsub(/.{4}(?=.)/, '\0 ')
'abcd efgh ijkl'
如果您正在寻找填充零,以防您的数字少于12个或多于12个,这将帮助您:
irb(main):002:0> 423523420987.to_s.scan(/\d{4}/).join(' ')
=> "4235 2342 0987"
irb(main):008:0> ('%d' % 423523420987).scan(/\d{4}/).join(' ')
=> "4235 2342 0987"
要详细介绍@Mark Byer的答案和@glenn mcdonald的评论,如果字符串/数字的长度不是4的倍数,您想怎么做
'1234567890'.gsub(/.{4}(?=.)/, '\0 ')
# => "1234 5678 90"
'1234567890'.reverse.gsub(/.{4}(?=.)/, '\0 ').reverse
# => "12 3456 7890"
马克·拜尔斯的可能是最快的,在我看来,这是最漂亮的。关于“填充零”的一点在编辑后不适用。这可能是最快的,加勒特的更容易阅读,只是因为所需的正则表达式更简单。你的数字保证平均分成4组吗?如果没有,您是否希望
'1234567890'.gsub(/.{4}(?=.)/, '\0 ')
# => "1234 5678 90"
'1234567890'.reverse.gsub(/.{4}(?=.)/, '\0 ').reverse
# => "12 3456 7890"