2011-07-21 56 views
6

在.NET(也許只是VB.NET)的轉換的String.Format {0},{1},...爲確定字符串,例如:在Java中等效的String.Format(.NET)?

Dim St As String = "Test: {0}, {1}" 
Console.WriteLine(String.Format(St, "Text1", "Text2")) 

我試圖在這兩個搜索Google和StackOverflows,但它們都返回數字字符串格式。

+0

相關問題:http://stackoverflow.com/questions/187676/java-equivalents-of-c-sharp-string-format-and-string-join?rq = 1 –

+0

可能的重複[Java等效於。 NET的String.Format](http://stackoverflow.com/questions/3754597/java-equivalent-to-nets-string-format) –

回答

8

其他建議當然不錯,但更多的是printf及其更新版本的Java血統。您發佈的代碼看起來受到MessageFormat的啓發。

String format = "Test: {0}, {1}" 
System.out.println(MessageFormat.format(format, "Text1", "Text2")) 

我真的不某些關於什麼'Return:語句儘管這樣做。

0
System.out.printf() 
System.out.format() 

對於其他方法使用:

StringBuilder sb = new StringBuilder(); 
Formatter f = new Formatter(sb, Locale.US); 
f.format("my %s", "string"); 
+0

它看起來比spinning_plate的方法長很多,它有什麼區別? –

+0

這是一樣的結果,雖然Formatter我相信可以做更多的事情,但我會用他的方法去,我只是想展示一些其他的東西,以防你正在做不同類型的格式化。 –

4
String.format("Test: %s, %s",string1,string2) 
+0

謝謝,所以是%s,不是{}。 –

6

使用MessageFormat.format,您也可以提供格式參數在更換令牌。

message = MessageFormat.format("This is a formatted percentage " + 
       "{0,number,percent} and a string {1}", varNumber, varText); 
     System.out.println(message); 

message = MessageFormat.format("This is a formatted {0, number,#.##} " + 
       "and {1, number,#.##} numbers", 25.7575, 75.2525); 
     System.out.println(message); 

或者,可以使用String.format,但這並不保證位置,例如, String.format("What do you get if you multiply %d by %s?", varNumber, varText);

+2

這個答案不完整。這不是直接替代。 .NET中的{0}和{1}可以定義參數的位置。例如,它可能是「測試:{1},{0}」,因此%s,%s會替換錯誤的位置。 – frankish