我想知道是否有人可以告诉我如何使用Java Strings的格式方法。 例如,如果我想要所有输出的宽度相同
例如,假设我总是希望我的输出是相同的
Name = Bob
Age = 27
Occupation = Student
Status = Single
在这个例子中,所有输出都是在彼此之间整齐地格式化;我将如何使用格式化方法实现此目的。
答案 0 :(得分:128)
System.out.println(String.format("%-20s= %s" , "label", "content" ));
输出如下:
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