字符串的Java输出格式

时间:2010-12-11 18:42:05

标签: java formatting

我想知道是否有人可以告诉我如何使用Java Strings的格式方法。 例如,如果我想要所有输出的宽度相同

例如,假设我总是希望我的输出是相同的

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

在这个例子中,所有输出都是在彼此之间整齐地格式化;我将如何使用格式化方法实现此目的。

6 个答案:

答案 0 :(得分:128)

System.out.println(String.format("%-20s= %s" , "label", "content" ));
  • 其中%s是您字符串的占位符。
  • ' - '使结果左对齐。
  • 20是第一个字符串的宽度

输出如下:

label               = content

作为参考,我建议Javadoc on formatter syntax

答案 1 :(得分:7)

例如,如果您想要至少4个字符,

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

答案 2 :(得分:6)

要回答您更新的问题,您可以

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

打印

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

答案 3 :(得分:6)

编辑:这是一个非常原始的答案,但我不能删除它,因为它被接受了。请参阅下面的答案,以获得更好的解决方案

为什么不动态生成空白字符串以插入语句。

所以如果你想让他们全部从第50个角色开始......

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

将所有这些放在一个循环中,并在每次迭代之前初始化/设置“key”和“value”变量,然后你就是金色的。我也会使用StringBuilder类来提高效率。

答案 4 :(得分:1)

@Override
public String toString()
{
  return String.format("%15s /n %15d /n %15s /n   %15s",name,age,Occupation,status);
}

答案 5 :(得分:0)

对于十进制值,您可以使用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);  
   }
}

并输出:

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

有关详细信息,请点击此处:

http://docs.oracle.com/javase/tutorial/java/data/numberformat.html