特定の文字の接頭辞を追加するためにJava.lang.String.format(String str, String str1)
を使用できます。
私はこれを次のような数に対して行うことができます:
int sendID = 202022;
String usiSuffix = String.format("%032d", sendID);
これは、長さ32のString
を作成し、0で左パディングします。00000000000000000000000000202022
SendIDがString
のような場合に同じことを行う方法:
String sendID = "AABB";
そして、私は次のような出力が必要です:0000000000000000000000000000AABB
次のハックな方法を使用して出力を取得できます。
String sendID = "AABB";
String output = String.format("%0"+(32-sendID.length())+"d%s", 0, sendID);
String.format
を本当に使用したい場合は、以下のようにすることができます。
String sendID = "AABB";
String.format("%32s", sendID ).replace(' ', '0')
String.format
以外にも、多くの解決策を見つけることができます ここ 。
編集:問題を指摘してくれたブライアンに感謝します。上記は、スペースを含む入力では機能しません。以下のようにしてみてください。ただし、文字列操作が多すぎるため、以下の操作はお勧めしません。
String sendID = "AA BB";
String suffix = String.format("%32s", "").replace(' ', '0') + sendID;
sendID = suffix.substring(sendID.length());
StringUtils.leftPad を使用することもできます
StringUtils.leftPad(sendID, 32 - sendID.length(), '0');
任意の文字を埋め込むためにString.format()
を使用することはできません。たぶん、Apache Commons StringUtils.leftPad() は、簡潔な解決策として役立ちますか? StringUtils.rightPad()
もあることに注意してください。
Java 8コードをあとで誰かが必要に応じて追加するだけです:
public class App {
public static void main(String[] args) {
System.out.println(leftpad("m m", 2, '@'));
System.out.println(leftpad("m m", 5, '@'));
}
static String leftpad(String s, int nb, char pad) {
return Optional.of(nb - s.length())
.filter(i -> i > 0)
.map(i-> String.format("%" + i + "s", "").replace(" ", pad + "") + s)
.orElse(s);
}
}
このバージョンでは、任意の文字をパディングとして追加できます
これは、ベースのjdks String.format関数を使用してこの問題を解決した方法です
String sendId="AABB";
int length=20;
String.format("%"+length+"s",sendId).replaceAll(" ","0")