117 votes

Génère des chaînes de longueur fixe remplies d'espaces.

J'ai besoin de produire une chaîne de longueur fixe pour générer un fichier basé sur la position des caractères. Les caractères manquants doivent être remplis par un espace.

Par exemple, le champ CITY a une longueur fixe de 15 caractères. Pour les entrées "Chicago" et "Rio de Janeiro", les sorties sont les suivantes

"        Chicago"
" Rio de Janeiro".

3voto

RCvaram Points 1987

Le StringUtils de la dépendance Apache common lang3 existe pour résoudre le problème du rembourrage gauche/droit.

Apache.common.lang3 fournit le StringUtils où vous pouvez utiliser la méthode suivante pour remplacer le padding par le caractère de votre choix.

StringUtils.leftPad(final String str, final int size, final char padChar);

Ici, il s'agit d'une méthode statique et les paramètres

  1. str - la chaîne doit être pad (peut être null)
  2. size - la taille à rembourrer
  3. padChar le caractère à utiliser pour le remplissage

Nous avons également des méthodes supplémentaires dans cette classe StringUtils.

  1. pavé droit
  2. répéter
  3. différentes méthodes d'assemblage

J'ajoute simplement la dépendance de Gradle ici pour votre référence.

    implementation 'org.apache.commons:commons-lang3:3.12.0'

https://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.12.0

Veuillez consulter toutes les méthodes utiles de cette classe.

https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html

Dépendance de la bibliothèque GUAVA

Ceci est la réponse de jricher. La bibliothèque Guava possède Strings.padStart qui fait exactement ce que vous voulez, ainsi que de nombreux autres utilitaires utiles.

1voto

Ce code fonctionne très bien. Expected output

  String ItemNameSpacing = new String(new char[10 - masterPojos.get(i).getName().length()]).replace('\0', ' ');
  printData +=  masterPojos.get(i).getName()+ "" + ItemNameSpacing + ":   " + masterPojos.get(i).getItemQty() +" "+ masterPojos.get(i).getItemMeasure() + "\n";

Bon codage !

0voto

hack4greatness Points 11
public static String padString(String word, int length) {
    String newWord = word;
    for(int count = word.length(); count < length; count++) {
        newWord = " " + newWord;
    }
    return newWord;
}

0voto

WvdHooven Points 1

Cette fonction simple fonctionne pour moi :

public static String leftPad(String string, int length, String pad) {
      return pad.repeat(length - string.length()) + string;
    }

Invocation :

String s = leftPad(myString, 10, "0");

0voto

arvindsis11 Points 1
public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            int s;
            String s1 = sc.next();
            int x = sc.nextInt();
            System.out.printf("%-15s%03d\n", s1, x);
            // %-15s -->pads right,%15s-->pads left
        }
    }
}

Utilisez printf() pour simplement formater la sortie sans utiliser de bibliothèque.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X