2013-07-08 22 views
23

Tôi mới sử dụng Java và từ Python. Trong Python, chúng tôi định dạng chuỗi như sau:Java: Định dạng chuỗi với trình giữ chỗ

>>> x = 4 
>>> y = 5 
>>> print("{0} + {1} = {2}".format(x, y, x + y)) 
4 + 5 = 9 
>>> print("{} {}".format(x,y)) 
4 5 

Làm cách nào để sao chép cùng một thứ trong Java?

Trả lời

45

Lớp MessageFormat trông giống như những gì bạn đang sau

System.out.println(MessageFormat.format("{0} + {1} = {2}", x, y, x + y)); 
+1

Với báo trước rằng 'MessageFormat.format' không xử lý giá trị giữ chỗ trống' {} '. –

+0

... và báo trước rằng nếu bạn sử dụng ''{' nó sẽ không nhận ra các dấu ngoặc –

10

Java có phương thức String.format hoạt động tương tự như vậy. Here's an example of how to use it. Đây là số documentation reference giải thích tất cả các tùy chọn % đó là gì.

Và đây là một ví dụ inlined:

package com.sandbox; 

public class Sandbox { 

    public static void main(String[] args) { 
     System.out.println(String.format("It is %d oclock", 5)); 
    }   
} 

này in ra "Đây là 5 oclock".

+1

này '% 'dựa chuỗi định dạng tương tự như [kiểu cũ. định dạng] (http://docs.python.org/2/tutorial/inputoutput.html#old-string-formatting) được sử dụng trong python, OP đang sử dụng [định dạng chuỗi kiểu mới] (http: //docs.python .org/2/library/string.html # formatspec) –

+0

Ah, từ câu hỏi tôi không biết anh ấy đã đặt nhiều hasis sử dụng dấu ngoặc nhọn. Tôi nghĩ anh ta chỉ muốn có một cách để định dạng một chuỗi mà không cần ghép các chuỗi và các biến lại với nhau. –

+1

Cảm ơn nhận xét btw. Nếu không tôi sẽ không hiểu tại sao @rgettman lại nhận được rất nhiều upvotes. –

3

Bạn có thể làm điều này (sử dụng String.format):

int x = 4; 
int y = 5; 

String res = String.format("%d + %d = %d", x, y, x+y); 
System.out.println(res); // prints "4 + 5 = 9" 

res = String.format("%d %d", x, y); 
System.out.println(res); // prints "4 5"