web-dev-qa-db-fra.com

Pad droit avec zéros

Désolé si cette question a déjà été posée, j'ai fait une recherche approfondie et rien.

Maintenant, je sais que:

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

Rangerai mon prix avec des zéros à gauche, donc un prix de 25 entraînera 00025

Et si je veux les plaquer à droite, le résultat est 25000 ? Comment puis-je utiliser des modèles only String.format?

19
Caina Santos

Vous pouvez utiliser:

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

Puis-je faire cela en utilisant uniquement le modèle de format? 

String.format utilise Formatter.justify exactement comme la méthode String.printf. À partir de ce post , vous verrez que l’espace de sortie est codé en dur, il est donc nécessaire d’utiliser le String.replace.

36
Reimeus

Essaye ça : 

String RightPaddedString = org.Apache.commons.lang.StringUtils.rightPad(InputString,NewStringlength,'paddingChar');
5
Prasad D

Essayez de lire cette documentation, regardez si la bibliothèque de Apache commons StringUtils peut vous aider 

J'ai créé un code comme celui-ci:

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);
}
1
Rafael Risso

Crédits à beginnersbook.com , voici une solution efficace au problème:

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');
  }
}

et le résultat est:

#mystring00@
#mystring0000000@
#mystring000000000000@
1
madx

Utilisez cette fonction pour un remplissage à droite.

private String rightPadding(String Word, int length, char ch) {
   return (length > Word.length()) ? rightPadding(Word + ch, length, ch) : Word;
}

comment utiliser?

rightPadding("25", 5, '0');
0
Samet öztoprak

Dans mon cas, j'ai résolu ce problème en utilisant uniquement du Java natif.

StringBuilder sb = new StringBuilder("1234");
sb.setLength(9);
String test = sb.toString().replaceAll("[^0-9]", "0");
System.out.println(test);

Donc, il a imprimé: 123400000

0
Rafael Nanes

si vous voulez faire sans format ou aucune fonction alors utilisé cette astuce simple System.out.println(price+"000");

0
Team Work