以下はRubyでコンマフィケーションのために機能します(,
数値を追加すると、に12345
なります12,345
)
def r(s)
s.gsub(/(?<=\d)(?=(\d\d\d)+\b)/, ",")
end
s = ""
1.upto(20) do |i|
s += (i % 10).to_s
puts r(s)
end
しかし、なぜバリエーションが機能r2
しr3
ないのだろうか?
def r2(s)
s.gsub(/(?<=\d)(?=(\d\d\d)+)\b/, ",")
end
def r3(s)
s.gsub(/(?<=\d)(?=\d\d\d)+\b/, ",")
end
1234
何も変更されていませんが、それは一致していると思う(?<=\d)(?=(\d\d\d)+)\b
ので、少し奇妙です。(私もPerlを使って試したので、Rubyに特有のものではありません)。
更新:以下は、の出力ですがr
、r2
およびの出力はまったく追加されてr3
いません。,
1
12
123
1,234
12,345
123,456
1,234,567
12,345,678
123,456,789
1,234,567,890
12,345,678,901
123,456,789,012
1,234,567,890,123
12,345,678,901,234
123,456,789,012,345
1,234,567,890,123,456
12,345,678,901,234,567
123,456,789,012,345,678
1,234,567,890,123,456,789
12,345,678,901,234,567,890