Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Ruby中,如何在每四个整数之间创建空格?_Ruby On Rails_Ruby - Fatal编程技术网

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"