我在想如果有人能告訴我如何使用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