質問を投稿する前に少し調べてみましたが、答えが見つかりませんでした。
これが私がやろうとしていることです:
入力:7〜8桁の小数点以下の桁数(分数なし)。
出力:「X XXXXXX X」(Xは数字)が存在する必要があります。
例:1234567 => 0 123456 7
私が試したこと:
DecimalFormatSymbols group = new DecimalFormatSymbols();
group.setGroupingSeparator(' ');
DecimalFormat idFormat = new DecimalFormat("0,000000,0", group);
しかし、これは代わりに「0 1 2 3 4 5 6 7」のようなものを出力します:S何が間違っているのですか?
編集:
これを行うと、必要なものを印刷できます。
DecimalFormatSymbols group = new DecimalFormatSymbols();
group.setGroupingSeparator(' ');
group.setDecimalSeparator(' ');
DecimalFormat idFormat = new DecimalFormat("0,000000.0", group);
そして、マニュアルを読み直してみると、DecimalFormatには可変長のグループを印刷する方法がないことがわかりました(幸運なことに、必要なのは2つだけなので、小数部分を使用できます)。しかし、これを「適切に」どのように行うのでしょうか。ここで正規表現を使用したり、独自の関数を記述したりしても大丈夫ですか、それともこれをすでに実行しているライブラリはありますか?
EDIT2:
キックのためだけに、以下はそれを行うための正規表現ベースの方法です:)
Random random = new Random();
System.out.println(
String.valueOf(Math.round(random.nextDouble() * 1e8))
.replaceAll("(.*)(\\d{6})(\\d)$", "$1 $2 $3")
.replaceAll("^ ", "0 "));