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