LoginSignup
3

More than 5 years have passed since last update.

Scala で数値を3桁区切りにする

Last updated at Posted at 2016-03-28

PHP には number_format っていう超便利関数があって、数値を渡すと3桁区切りにしてくれる。

$x = 1234567890;
number_format($x);
// 1,234,567,890

Scala で同じようなことがしたいとき scala number_format とかでググると以下のような例がたくさん出てくる。

val x = 1234567890
x.toString.reverse.sliding(3, 3).map(_.reverse).toSeq.reverse.mkString(",")

Scala っぽいコードで一瞬「スゲー!」って思いがちなんだけど Scala は Java の資産をそのまま使えるので実は下記のコードで実現できる。

val x = 1234567890
java.text.NumberFormat.getIntegerInstance.format(x)

追記

……とかドヤ顔で書いてたら、投稿の数分後にコメントでもっとシンプルな方法を教えていただいた。

val x = 1234567890

// コメントで教えてもらった方法
f"$x%,3d"

// Java っぽく書くと...
String.format("%,3d", x)

// Scala 2.9 までなら...
"%,3d".format(x)

Java の String.format(...) だけで3桁区切りできることを初めて知った(恥)。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3