我在想如果有人能告诉我如何使用Java字符串的格式化方法。 举例来说,如果我想我的所有输出的宽度是相同的Strings的Java输出格式
举例来说,假设我总是希望我的输出是一样的
Name = Bob
Age = 27
Occupation = Student
Status = Single
在这个例子中,所有的输出都整齐地格式化在彼此之下;我将如何使用格式化方法来完成此操作。
我在想如果有人能告诉我如何使用Java字符串的格式化方法。 举例来说,如果我想我的所有输出的宽度是相同的Strings的Java输出格式
举例来说,假设我总是希望我的输出是一样的
Name = Bob
Age = 27
Occupation = Student
Status = Single
在这个例子中,所有的输出都整齐地格式化在彼此之下;我将如何使用格式化方法来完成此操作。
为什么不只是动态地生成一个空白字符串来插入到语句中。
所以,如果你希望它们都开始于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);
把所有的在一个循环,并初始化/设置“键”,并在每次迭代之前的“价值”变量你是金。我也会使用StringBuilder
类,这样更有效率。
如果你想有一个最低的4个字符,例如,
System.out.println(String.format("%4d", 5));
// Results in " 5", minimum of 4 characters
不过说真的,你需要学习如何理解文档。
实际上不会导致“0005”?因为它是一个整数参数。我不确定这个“空格数量”参数是否适用于字符串。 (也就是%4s有类似的效果吗?)我不能说我在写这些字符串的时候曾经担心过我的字符串,但是我始终都用这个参数来表示数字,并且我确信它会导致领先0被添加。 – gnomed 2010-12-11 19:03:43
不! %4d将使用三个前导空格进行格式化。要获得前导零,您需要%04d。我只是在IdeOne中试过这个:http://ideone.com/dzNQU – 2010-12-11 19:15:30
啊,是的,你绝对正确,那就是我使用的格式化字符串。 – gnomed 2010-12-13 02:23:55
System.out.println(String.format("%-20s= %s" , "label", "content"));
输出看起来是这样的:
label = content
作为参考,我建议Javadoc on formatter syntax
要回答你更新的问题,你可以做
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
对于十进制值,你可以使用的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
@Override
public String toString()
{
return String.format("%15s /n %15d /n %15s /n %15s",name,age,Occupation,status);
}
欢迎使用Stack Overflow,Amol。为什么不加入一个代码片段,为什么不加入一个关于它如何工作的小解释? – 2015-10-22 15:13:06
你这是什么实际上想要知道[文档](http://download.oracle.com/javase/6/docs/api/java/lang/String。HTML格式)和[格式字符串文档](http://download.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax)不显示您? – birryree 2010-12-11 18:44:34
如何设置宽度,所以我的字符串总是按照宽度 – 2010-12-11 18:51:09
输出,您使用宽度说明符,例如%10s为10的宽度。 – 2010-12-11 18:55:38