2017-11-27 17 views
5

Tôi có chuỗi mẫuJava Message Formatter không hoạt động

xxxxxxxx xxxxx-xx: [{0}] xxxxxxx xxxxx xxxxxx xxxxxx [{1}] xxxxxx xxxx xxxxx'x xxxxx xxxxxx xxxx [{2}] 

Thậm chí nếu tôi cung cấp tất cả ba lập luận vẫn không làm việc

public static void main(String[] args) { 
    String s = "xxxxxxxx xxxxx-xx: [{0}] xxxxxxx xxxxx xxxxxx xxxxxx [{1}] xxxxxx xxxx xxxxx'x xxxxx xxxxxx xxxx [{2}]"; 

    System.out.println(MessageFormat.format(s,"1","2","3")); 
} 

Đầu ra là:

xxxxxxxx xxxxx-xx: [1] xxxxxxx xxxxx xxxxxx xxxxxx [2] xxxxxx xxxx xxxxxx xxxxx xxxxxx xxxx [{2}] 

Xem đầu ra, nó xuất ra các {2} thay vì 3, tôi không thể tìm thấy lý do tại sao nó không hoạt động. Nó là một lỗi hoặc tôi đang thiếu một cái gì đó?

+3

Xem đầu ra. Xuất của nó {2} thay vì 3 – Makky

+0

Là thiếu ''' trong đầu ra một lỗi đánh máy hoặc đầu ra thực tế? – hnefatl

+0

Đầu ra của nó, bạn có thể thử – Makky

Trả lời

9

Vấn đề của bạn là trong dấu nháy đơn ' bạn phải sử dụng đôi '' thay vì một:

xxxxx''x 

Đọc tài liệu về dấu nháy đơn (MessageFormat)

Trong một String , một cặp dấu nháy đơn có thể được sử dụng để trích dẫn bất kỳ ký tự tùy ý nào là trừ dấu ngoặc đơn. Ví dụ: chuỗi mẫu "'{0}'" đại diện cho chuỗi "{0}", không phải là FormatElement. Một dấu ngoặc đơn chính nó phải được thể hiện bằng dấu ngoặc đơn kép '' trong một chuỗi . Ví dụ: Ví dụ, chuỗi mẫu "'{' '}'" được hiểu là một chuỗi của '{(bắt đầu trích dẫn và dấu ngoặc nhọn trái),' '(một dấu ngoặc đơn ) và}' (dấu phẩy phải dấu ngoặc kép và kết thúc trích dẫn), không phải '{' và '}' (dấu ngoặc nhọn trái và phải): biểu thị chuỗi "{'}", không phải là "{}".

+0

Đây có phải là cái gì đó được cung cấp trong tài liệu API không? – Makky

2

Đó là vì bạn có ' trong chuỗi của mình. Bạn cần phải thoát khỏi nó hoặc bạn đang thiếu một.

3

Đó là dấu nháy đơn thực sự, bạn cần phải thoát khỏi dấu nháy đơn bằng một dấu móc lửng khác, như: ''xxx. Của nó trong doc btw:

Trong chuỗi, '' (hai dấu nháy đơn) đại diện cho một dấu nháy đơn.

+0

Cảm ơn. Tôi đạt được rồi ! ngớ ngẩn tôi – Makky

+0

@ Alexy ngớ ngẩn tôi quá;) Tôi hoàn toàn quên mất điều này – Eugene

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