Peut Java.lang.String.format(String str, String str1)
être utilisé pour ajouter le préfixe d'un caractère particulier.
Je pourrais le faire pour un nombre comme:
int sendID = 202022;
String usiSuffix = String.format("%032d", sendID);
Cela donne un String
de longueur 32 et laissé à gauche avec 0s: 00000000000000000000000000202022
Comment obtenir la même chose lorsque sendID est un String
comme:
String sendID = "AABB";
Et je veux une sortie comme: 0000000000000000000000000000AABB
Vous pouvez utiliser cette méthode pour obtenir votre sortie:
String sendID = "AABB";
String output = String.format("%0"+(32-sendID.length())+"d%s", 0, sendID);
Vous pouvez faire comme ci-dessous si vous voulez vraiment utiliser String.format
,
String sendID = "AABB";
String.format("%32s", sendID ).replace(' ', '0')
Autre que String.format
, vous pouvez trouver de nombreuses solutions ici .
Edit : Merci à Brian pour le point de la question. Ce qui précède ne fonctionnera pas pour les entrées avec des espaces. Vous pouvez essayer comme ci-dessous. Mais je ne suggérerai pas l'opération ci-dessous car elle comporte trop d'opérations de chaîne.
String sendID = "AA BB";
String suffix = String.format("%32s", "").replace(' ', '0') + sendID;
sendID = suffix.substring(sendID.length());
Vous pouvez également essayer d’utiliser StringUtils.leftPad
StringUtils.leftPad(sendID, 32 - sendID.length(), '0');
Vous ne pouvez pas utiliser String.format()
pour le remplissage avec des caractères arbitraires. Peut-être Apache Commons StringUtils.leftPad () serait-il utile pour une solution concise? Notez qu'il y a aussi une StringUtils.rightPad()
aussi.
Je viens d'ajouter du code Java 8 si quelqu'un en a besoin à l'avenir:
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);
}
}
Cette version supporte l'ajout de n'importe quel caractère comme padding
Voici comment j'ai résolu ce problème en utilisant la fonction de base jdks String.format.
String sendId="AABB";
int length=20;
String.format("%"+length+"s",sendId).replaceAll(" ","0")