Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 给数字加逗号_Ruby_Regex - Fatal编程技术网

Ruby 给数字加逗号

Ruby 给数字加逗号,ruby,regex,Ruby,Regex,我想把1234567这样的数字变成1234567,但需要一些帮助。我的想法是,我可以使用带有\d{3}的拆分,然后加入一个。但问题是,\d{3}将它从另一端分组,因此它将像123456,7一样,我不希望这样 谢谢你的帮助 我不知道ruby是否已经有了格式化数字的选项,但是在regex中你可以这样做 /\G([+-]?\d+?)(?=(?:\d{3})++(?=\.\d++$|$))/g 然后换成这个 \1, 样本: 更精确的代码(只处理整数,因为OP没有提到浮点数!): 我会使用Rails的

我想把1234567这样的数字变成1234567,但需要一些帮助。我的想法是,我可以使用带有
\d{3}
的拆分,然后加入一个。但问题是,
\d{3}
将它从另一端分组,因此它将像123456,7一样,我不希望这样


谢谢你的帮助

我不知道ruby是否已经有了格式化数字的选项,但是在regex中你可以这样做

/\G([+-]?\d+?)(?=(?:\d{3})++(?=\.\d++$|$))/g
然后换成这个

\1,
样本: 更精确的代码(只处理整数,因为OP没有提到浮点数!):


我会使用Rails的ActiveSupport(即使我没有在实际的应用程序中使用Rails),它也会根据当前的语言环境对其进行适当的格式化。如果您尚未使用Rails,则需要安装gem:

gem install activesupport
然后,像这样要求它:

require "active_support/core_ext"
然后你可以做:

=> ActiveSupport::NumberHelper.number_to_delimited(1234567)
=> "1,234,567"

您可能没有使用Rails,但对于任何人来说:
number\u with\u delimiter(1234567)
@MarkThomas可以在GitHub上找到,以防您是一个“通过源代码学习”的人。@user3606254-希望我的回答与您的想法类似!愚蠢的问题…你为什么要用它来代替“,”或类似的东西?我不明白你用这个正则表达式完整的ruby示例是什么意思:
“1234567”。gsub(/\G([+-]?\d+)(?=(?:\d{3})++(?=\。\d++$$)/,'\1')
要回答OP的问题,替换的是每组匹配的字符(
\1
)后面跟一个逗号。正如@MarkThomas所说,\ 1是匹配组,后面跟一个逗号,因此每3个数字,它会在匹配\1中添加一个逗号,
=> ActiveSupport::NumberHelper.number_to_delimited(1234567)
=> "1,234,567"