回答
除的String.format,也看看java.text.MessageFormat
。格式較少簡潔,有點接近C#示例你」已經提供並可以將其用於解析以及
,例如:
int someNumber = 42;
String someString = "foobar";
Object[] args = {new Long(someNumber), someString};
MessageFormat fmt = new MessageFormat("String is \"{1}\", number is {0}.");
System.out.println(fmt.format(args));
一個更好的實施例利用了可變參數的和自動裝箱改進的Java 1.5並接通到上述一襯墊:
MessageFormat.format("String is \"{1}\", number is {0}.", 42, "foobar");
MessageFormat
對於用選項修飾符做i18nized複數有點更好。要指定正確地使用單數形式時,變量爲1和複數另有一個消息,你可以做這樣的事情:
String formatString = "there were {0} {0,choice,0#objects|1#object|1<objects}";
MessageFormat fmt = new MessageFormat(formatString);
fmt.format(new Object[] { new Long(numberOfObjects) });
MessageFormat是用於本地化的目的,所以在使用它時要小心。例如下面的代碼:'MessageFormat.format(「Number {0}」,1234));'取決於默認語言環境可以產生'Number 1,234'而不是'Number 1234'。 –
@ataylor:你好,對不起,但我有點困惑。我想要這樣的東西,我會傳遞具有數據的Class對象,並且當{{1},然後是lastname'時,它將採用firstname',就像這樣。是否可能像'{0,choice,0.getFirstName()}'或類似的東西? –
@ user3145373ツ我不這麼認爲。 – ataylor
看看String.format。但請注意,它需要的格式說明符與C的printf功能家族相似 - 例如:
String.format("Hello %s, %d", "world", 42);
會返回「Hello world 42」。在瞭解格式說明符時,您可能會發現this有幫助。 Andy Thomas-Cramer很友善地將this鏈接留在下面的評論中,這似乎指向官方規範。最常用的是:
- %S - 插入一個字符串
- %d - 插入符號的整數(十進制)
- %F - 插入一個實數,標準符號
這與C#完全不同,C#使用具有可選格式說明符的位置引用。
這意味着,你不能做喜歡的東西:
String.format("The {0} is repeated again: {0}", "word");
...
實際上不重複傳遞給printf /格式參數。
(見下面的Scrum邁斯特的評論)
如果你只是想直接打印結果,您可能會發現System.out.printf(PrintStream.printf)根據自己的喜好。
另一種選擇是java.text.MessageFormat,它接受{ 1}樣式的格式符號。 String.format()的格式符號可以類似於C的printf()格式符號 - 但也可能不同。有關完整的語法,請參見http://download.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax。 –
'String.format'也可以使用數字位置:'String.format(「%2 $ s%1 $ s」,「foo」,「bar」);'輸出'bar foo' –
如果您選擇不使用的String.format,另一個選項是+二元運算符
String str = "Step " + a + " of " + b;
這是
new StringBuilder("Step ").append(String.valueOf(1)).append(" of ").append(String.valueOf(2));
無論你用的是你的選擇相當。 StringBuilder速度更快,但速度差異很小。我更喜歡使用+
運營商(其中做了StringBuilder.append(String.valueOf(X)))
並發現它更容易閱讀。
如果你打算去要否認我,請解釋原因。 –
1)爲了回答關於字符串格式化的問題,你解釋'+'操作符是如何工作的。 2)你的解釋甚至不準確。 '+'等同於使用'StringBuilder',而不是'String.concat'。 [(對此太多瞭解。)](http://www.znetdevelopment。com/blogs/2009/04/06/java-string-concatenation /) –
StringBuilder.append,實際上。我會更新答案。 –
public class StringFormat {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("================================");
for(int i=0;i<3;i++){
String s1=sc.next();
int x=sc.nextInt();
System.out.println(String.format("%-15s%03d",s1,x));
}
System.out.println("================================");
}
}
outpot 「========= =======================「
ved15space123 ved15space123 ved15space123 」================= ===============
Java解決方案
的 「 - 」 是用來左縮進
的 「15」,使該字符串的最小長度它佔用是15
- 的 「S」(這是%)後的幾個字符將被替換爲我們的字符串
- 0填充我們的整數在0左邊
- 3使我們的整數爲最小長度3
你是對的http://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html#syntax –
我已經寫了我的簡單的方法吧:
public class SomeCommons {
/** Message Format like 'Some String {0}/{1}' with arguments */
public static String msgFormat(String s, Object... args) {
return new MessageFormat(s).format(args);
}
}
,所以你可以使用它作爲:
SomeCommons.msfgFormat("Step {1} of {2}", 1 , "two");
該解決方案爲我工作。我需要爲REST客戶端創建URL動態,所以我創造了這個方法,所以你只需要通過restURL這樣
/customer/{0}/user/{1}/order
,並添加儘可能多的PARAMS,因爲你需要:
public String createURL (String restURL, Object ... params) {
return new MessageFormat(restURL).format(params);
}
你只需要調用這個方法是這樣的:
createURL("/customer/{0}/user/{1}/order", 123, 321);
輸出
「/客戶/ 123 /用戶/ 321 /訂單」
- 1. 如何用格式化器在java中格式化字符串
- 2. 格式字符串 - Java
- 3. 格式字符串java
- 4. Java字符串格式
- 5. 格式化Java字符串
- 6. 如何字符串格式
- 7. 在Java中檢查字符串格式?
- 8. 在java中格式化字符串
- 9. 格式化字符串,並在Java
- 10. 在java中格式化字符串
- 11. 在Java中格式化字符串
- 12. 字符串格式化在Java中與尖字符串元素
- 13. 如何在字符串內使用字符串切片。格式
- 14. 如何排序在java中的字符串格式的日期?
- 15. 如何在JAVA中生成所需格式的json字符串?
- 16. 如何在java SE7中格式化字符串?
- 17. 如何在Java中打印已格式化的字符串
- 18. 如何在java中解析json格式字符串
- 19. 如何在java中正確地格式化JSON字符串?
- 20. 如何在java中格式化日期字符串?
- 21. 如何從字符串的這種格式在java中
- 22. 如何在Java中創建字符串格式化機制?
- 23. 如何在Java中使用字符串格式編寫% - Android Studio
- 24. 如何在Java的字符串格式化程序中格式化時間和字符串值
- 25. 字符串格式化在格式化整個字符串
- 26. 將.net格式的字符串轉換爲java格式的字符串
- 27. 如何在Java字符串
- 28. 如何解析字符串格式,如[***] ***?
- 29. 如何格式化字符串,如#。#。#。#
- 30. 創建一個字符串格式的Java字符串變量
見[本問題](http://stackoverflow.com/questions/5057960/is-there-a-general-string-substitution-function -similar-to-sl4fj) –
http://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html#syntax –