2011-07-21 14 views
6

Các String.Format trong .NET (có thể chỉ VB.NET) chuyển đổi {0}, {1}, ... vào chuỗi xác định, ví dụ:String.Format (.NET) tương đương trong Java?

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

Tôi đã cố gắng để tìm kiếm trong cả hai Google và StackOverflows, nhưng tất cả đều trả về định dạng chuỗi số.

+0

Câu hỏi liên quan: http://stackoverflow.com/questions/187676/java-equivalents-of-c-sharp-string-format-and-string-join?rq=1 –

+0

có thể trùng lặp với [Java Tương đương với. NET.Format của NET] (http://stackoverflow.com/questions/3754597/java-equivalent-to-nets-string-format) –

Trả lời

8

Các đề xuất khác chắc chắn là tốt, nhưng nhiều hơn trong phong cách printf và dòng truyền thừa của nó là những bổ sung gần đây nhất cho Java. Mã bạn đăng sẽ được lấy cảm hứng từ MessageFormat.

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

Tôi không thực sự chắc chắn về những gì tuyên bố 'Return: đang làm.

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

Đối với các phương pháp khác sử dụng:

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

Nó trông dài hơn nhiều so với phương pháp spinning_plate, sự khác biệt của nó là gì? –

+0

Đó là kết quả tương tự, mặc dù Formatter tôi tin rằng có thể làm nhiều hơn nhưng tôi sẽ đi với phương pháp của mình tôi chỉ muốn hiển thị một số khác trong trường hợp bạn đang làm các loại định dạng khác nhau. –

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

Cảm ơn, vì vậy, đó là% s chứ không phải {}. –

6

Sử dụng MessageFormat.format, bạn cũng có thể cung cấp đối số định dạng trong thẻ thay thế.

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); 

Hoặc có thể sử dụng String.format nhưng không đảm bảo vị trí, ví dụ: String.format("What do you get if you multiply %d by %s?", varNumber, varText);.

+2

Câu trả lời này chưa hoàn thành. Đây không phải là sự thay thế trực tiếp. {0} và {1} trong .NET là có để chúng xác định vị trí của các tham số. Ví dụ: có thể là "Thử nghiệm: {1}, {0}", vì vậy% s,% s sẽ thay thế vị trí sai. – frankish