3桁ごとにコンマを文字列に補間しようとしています。補間は文字列の最後から行う必要があります。したがって、入力は次のとおりです。
"12345678"
出力は次のようになります。
"12,345,678"
これまでのところ、私は思いついた:
"12345678".reverse.gsub(/(\d{3})(?=.)/) { $1 + ',' }.reverse
しかし、これは私には少し不格好に思えます。これをよりエレガントに解決する方法についてのアイデアはありますか?
もう 1 つの方法は、もう少し一般化してメソッドに簡単に収まるようにし、新しい Ruby 2 構文を使用するものです。
def intersperse(ns, char: ",", step: 3)
  ys = ""
  ns.chars.each_with_index{|n,i|
    ys << char if i % step == ns.length % step unless i == 0
    ys << n 
  }
  ys
end
ns = "12345678"
intersperse ns
# => "12,345,678"
intersperse ns, step: 2
# => "12,34,56,78"
intersperse ns, char: "!"
# => "12!345!678"