web-dev-qa-db-fra.com

Format de sortie Java pour Strings

Je me demandais si quelqu'un pouvait me montrer comment utiliser la méthode de formatage pour Java Strings .

Par exemple, supposons que je veux toujours que ma sortie soit la même

Name =              Bob
Age =               27
Occupation =        Student
Status =            Single

Dans cet exemple, toutes les sorties sont correctement formatées les unes sous les autres; Comment pourrais-je accomplir cela avec la méthode de formatage.

41
Steffan Harris

EDIT: C'est une réponse extrêmement primitive mais je ne peux pas la supprimer car elle a été acceptée. Voir les réponses ci-dessous pour une meilleure solution si

Pourquoi ne pas simplement générer une chaîne d’espace dynamiquement à insérer dans l’instruction.

Donc, si vous voulez qu'ils partent tous du 50e personnage ...

String key = "Name =";
String space = "";
for(int i; i<(50-key.length); i++)
{space = space + " ";}
String value = "Bob\n";
System.out.println(key+space+value);

Mettez tout cela dans une boucle et initialisez/définissez les variables "clé" et "valeur" avant chaque itération et vous êtes en or. J'utiliserais aussi la classe StringBuilder qui est plus efficace.

6
gnomed
System.out.println(String.format("%-20s= %s" , "label", "content" ));
  • Où% s est un espace réservé pour votre chaîne.
  • Le '-' rend le résultat justifié à gauche.
  • 20 est la largeur de la première chaîne

La sortie ressemble à ceci:

label               = content

Comme référence, je recommande Javadoc sur la syntaxe du formateur

123
stacker

Si vous voulez un minimum de 4 caractères, par exemple,

System.out.println(String.format("%4d", 5));
// Results in "   5", minimum of 4 characters
7
I82Much

Pour répondre à votre question mise à jour, vous pouvez le faire

String[] lines = ("Name =              Bob\n" +
        "Age =               27\n" +
        "Occupation =        Student\n" +
        "Status =            Single").split("\n");

for (String line : lines) {
    String[] parts = line.split(" = +");
    System.out.printf("%-19s %s%n", parts[0] + " =", parts[1]);
}

empreintes

Name =              Bob
Age =               27
Occupation =        Student
Status =            Single
6
Peter Lawrey
@Override
public String toString()
{
  return String.format("%15s /n %15d /n %15s /n   %15s",name,age,Occupation,status);
}
1
Amol Kakade

Pour les valeurs décimales, vous pouvez utiliser DecimalFormat.

import Java.text.*;

public class DecimalFormatDemo {

   static public void customFormat(String pattern, double value ) {
      DecimalFormat myFormatter = new DecimalFormat(pattern);
      String output = myFormatter.format(value);
      System.out.println(value + "  " + pattern + "  " + output);
   }

   static public void main(String[] args) {

      customFormat("###,###.###", 123456.789);
      customFormat("###.##", 123456.789);
      customFormat("000000.000", 123.78);
      customFormat("$###,###.###", 12345.67);  
   }
}

et la sortie sera:

123456.789  ###,###.###   123,456.789
123456.789  ###.##        123456.79
123.78      000000.000    000123.780
12345.67    $###,###.###  $12,345.67

Pour plus de détails, regardez ici:

http://docs.Oracle.com/javase/tutorial/Java/data/numberformat.html

0
Roman