2012-03-10 36 views
56

Ok, vì vậy tất cả chúng ta nên biết rằng bạn có thể bao gồm các biến thành chuỗi bằng cách thực hiện:Java - Bao gồm các biến trong chuỗi?

String string = "A string " + aVariable; 

Có cách nào để làm điều đó thích:

String string = "A string {aVariable}"; 

Nói cách khác: Nếu không có để đóng dấu ngoặc kép và thêm dấu cộng. Nó rất không hấp dẫn.

+0

Tại sao bạn cần loại thao tác chuỗi này? –

+4

@Chandra Xin đừng hỏi tại sao, nhưng hãy giải thích nếu có thể. Nó chỉ là cách tôi muốn làm điều đó. Cảm ơn. –

+2

Sử dụng Groovy, sau đó bạn sẽ có thể thực hiện "Một chuỗi $ {aVariable}" tất cả những gì bạn muốn. –

Trả lời

68

Bạn luôn có thể sử dụng String.format (....). tức là,

String string = String.format("A String %s %2d", aStringVar, anIntVar); 

Tôi không chắc liệu đó có đủ hấp dẫn cho bạn hay không, nhưng nó có thể khá tiện dụng. Cú pháp cũng giống như đối với printf và java.util.Formatter. Tôi đã sử dụng nó rất nhiều đặc biệt là nếu tôi muốn hiển thị dữ liệu số bảng.

+0

Thú vị. Điều này có vẻ chỉ là về nó. –

+0

Tôi sẽ đánh dấu câu trả lời này là câu trả lời sau 10 phút. –

+1

Tôi biết đây là vấn đề của ý kiến, nhưng tôi không thấy cách 'định dạng' hấp dẫn hơn so với biểu thức nối chuỗi đơn giản.Trường hợp 'định dạng' đi vào riêng của nó là khi bạn cần làm đệm, định dạng số, v.v. –

38

Điều này được gọi là nội suy chuỗi; nó không tồn tại như vậy trong Java.

Một cách tiếp cận là sử dụng String.format:

String string = String.format("A string %s", aVariable); 

phương pháp khác là sử dụng một thư viện khuôn mẫu như Velocity.

+1

Tâm trí tuyệt vời nghĩ như nhau! 1+ –

14

Cũng xem xét java.text.MessageFormat, sử dụng cú pháp có liên quan có chỉ mục đối số dạng số. Ví dụ,

String aVariable = "of ponies"; 
String string = MessageFormat.format("A string {0}.", aVariable); 

kết quả trong string chứa sau:

A string of ponies. 

Thông thường hơn, lớp được sử dụng để định dạng số và thời gian của nó. Ví dụ về định dạng nhãn JFreeChart được mô tả here; lớp RCInfo định dạng ngăn trạng thái của trò chơi.

+1

Đối với ai đó đến từ CSharp theo cách này là đơn giản hơn vì nó tương tự như string.Format trong C#. – Mojtaba

Các vấn đề liên quan