web-dev-qa-db-ja.com

String.format(Java)で使用する場合、「%1 $#」はどういう意味ですか?

言語はJavaです。 _%1$#_はどういう意味ですか...

_static String padright (String str, int num) {
   return String.format("%1$#" + num + "str", str);
}
_

Java APIでは、String.format()は次のように使用されます。

_public static String format(String format, Object... args)
_

したがって、_%1$#_はフォーマット指定子だと思います。

_%[flags][width][.precision][argsize]typechar_はテンプレートです。

  • 1は旗ですか?
  • $は幅ですか?
  • #精度は?
  • numはargsizeですか?
  • 「str」はtypecharですか?

そうですか?

16
theineffablebob

テンプレート:

%[argument_index$][flags][width][.precision]conversion

オプションのargument_indexは、引数リスト内の引数の位置を示す10進整数です。最初の引数は「1 $」で参照され、2番目の引数は「2 $」で参照されます。

オプションのフラグは、出力形式を変更する文字のセットです。有効なフラグのセットは、変換によって異なります。

オプションの幅は、出力に書き込まれる最小文字数を示す10進整数です。

オプションの精度は、通常、文字数を制限するために使用される負でない10進整数です。具体的な動作は、変換によって異なります。

必要な変換は、引数のフォーマット方法を示す文字です。特定の引数の有効な変換のセットは、引数のデータ型によって異なります。

%1$は最初の置換を指します。この場合、文字列str#は、結果が変換に依存する代替形式を使用する必要があることを示すフラグです。

http://download.Oracle.com/javase/1.5.0/docs/api/Java/util/Formatter.html

33
manojlds