2013-07-06 35 views
8

Tôi có một chuỗi như thế này:Có gì sai với chuỗi định dạng này?

<string name="q_title" formatted="false">Item %d of %d</string> 

Tôi đang sử dụng nó trong String.format như thế này:

String log = String.format(getString(R.string.q_title), 100, 500); 

Cho đến nay tôi đã quan sát thấy không có vấn đề với sản lượng.

Tuy nhiên, kiểm tra mã trong Android Studio mang lại cho tôi:

Format chuỗi 'q_title' không phải là một chuỗi định dạng hợp lệ để nó không phải được chuyển vào String.Format

Tại sao?

+0

hãy xem [ở đây] (http://developer.android.com/guide/topics/resources/string-resource. html # FormattingAndStyling) – Blackbelt

+0

Điều gì sẽ xảy ra nếu bạn xóa các dấu gạch chéo ngược trước dấu ngoặc kép? – fge

+1

Bạn có thể cập nhật câu hỏi của mình bằng chuỗi mới không? – Blackbelt

Trả lời

14

chuỗi của bạn nên được

<string name="q_title" formatted="false">Item %1$d of %2$d</string> 

Và mã

String log = getString(R.string.q_title, 100, 500); 

Khi bạn có nhiều đối số, bạn cần đánh dấu chúng bằng 1 $, 2 $ ... n $. Trong trật tự lang arabian được đảo ngược, vì vậy họ cần phải biết làm thế nào để thay đổi nó một cách chính xác.

getString(id, args...) tự thực hiện định dạng.

2

Đối với những người vẫn đang tìm kiếm câu trả lời này, như link that Blackbelt posted ngụ ý, định dạng đúng cho chuỗi sẽ là:

<string name="q_title">Item %1$d of %2$d</string> 
1

Cẩn thận để thoát khỏi tất cả các ký tự đặc biệt

Tôi đã có một vấn đề với chuỗi này bởi vì tôi quên để thoát khỏi nhân vật tỷ lệ "%" ở cuối.

<string name="market_variation_formatter">%s %</string> 

Ưu điểm thoát chuỗi là:

<string name="market_variation_formatter">%s \%</string> 
4

Đối với phần trăm, sau đây làm việc cho tôi.

<string name="score_percent">%s%%</string> 


getString(R.string.score_percent,"20") 

Nếu bạn đang đối phó với số nguyên thay thế bằng cách d

<string name="score_percent">%d%%</string> 
Các vấn đề liên quan