29

この質問が既に作成されている場合は申し訳ありません。詳細な検索を行いましたが、何もしませんでした。

今、私はそれを知っています:

String.format("%05d", price);

価格の左側にゼロを埋め込むため、価格が 25 の場合は00025になります

それらを右にパディングしたい場合、結果は25000になりますか? String.formatパターンのみ を使用してそれを行うにはどうすればよいですか?

4

7 に答える 7

51

あなたが使用することができます:

String.format("%-5s", price ).replace(' ', '0')

フォーマットパターンのみを使用してこれを行うことはできますか?

String.formatFormatter.justifyメソッドと同じように使用しString.printfます。この投稿から、出力スペースがハードコーディングされていることがわかります。そのため、を使用するString.replace必要があります。

于 2012-10-18T19:50:49.480 に答える
3

このドキュメントを読んでみてください。Apache Commons のライブラリStringUtilsが役立つかどうかを確認してください。

私はこのようなコードを作りました:

import org.apache.commons.lang3.StringUtils;

public static void main(String[] args)  {   
  String str = "123";
  str = StringUtils.leftPad(str,10,"0"); //you can also look the rightPad function.
  System.out.println(str);
}
于 2014-04-15T19:59:22.680 に答える
1

これは、この問題に対する有効な解決策です

public class PadRightTest {
  public static void main(String[] argv) {
    System.out.println("#" + rightPadZeros("mystring", 10) + "@");
    System.out.println("#" + rightPadZeros("mystring", 15) + "@");
    System.out.println("#" + rightPadZeros("mystring", 20) + "@");
  }

  public static String rightPadZeros(String str, int num) {
    return String.format("%1$-" + num + "s", str).replace(' ', '0');
  }
}

出力は次のとおりです。

#mystring00@
#mystring0000000@
#mystring000000000000@
于 2017-04-26T10:38:07.460 に答える