2012-02-21 39 views
16

Trong < chuỗi mảng name = "phiên bản"> Tôi có con thú này một mục (luộc xuống đến mức tối thiểu hợp lý để tái tạo các hiệu ứng):thoát nhiều “%” nhân vật trong Android

<item>100% foo 40%bar</item> 

mà sản xuất các lỗi này:

Multiple annotations found at this line: 
- error: Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute? 
- error: Found tag </item> where </string-array> is expected 

Thêm định dạng = "sai" không thay đổi gì.

<item>100&#37; foo 40&#37;bar</item> 

dẫn đến các thông báo lỗi tương tự. WTH?

<item>100% foo 40bar</item> 
<item>100 foo 40%bar</item> 
<item>100% foo 40%</item> 

tất cả sẽ hoạt động tốt. Thoát nó bằng \% chỉ bị bỏ qua dẫn đến lỗi tương tự. %% không dẫn đến lỗi nhưng tôi nhận %%.

+0

http://stackoverflow.com/questions/4414389/android-xml-percent-symbol/4417333#4417333, hầu hết những gì bạn nói sẽ không hoạt động nhưng hãy xem tùy chọn cuối cùng. –

+0

Thanx cho câu trả lời. Thật không may tôi không phải đối phó với một chuỗi mà có thể cho phép thay thế ở tất cả trừ khi có một cách để làm thay thế trong mảng. Trong mảng arrays.xml của tôi có một mảng chuỗi với các mục. Tôi tải thông qua getResources(). GetStringArray (R.array.versions); – Giszmo

+0

ouch, getStringArray sử dụng trình định dạng và chưa cho phép bạn chuyển đối số định dạng. Tôi sợ rằng bạn sẽ phải tạo lại mảng sau khi bạn tải nó, thay thế bằng%, hoặc sửa các chuỗi khi bạn sử dụng chúng. –

Trả lời

21

Encoding từng là một nhân vật unicode trong xml làm việc cho tôi:

<string name="test">100\u0025 foo 40\u0025bar</string> 
+1

Ok, tôi đoán đây là cách để đi. Tôi vẫn muốn hiểu tại sao cả hai số % và \ u0025 là% nhưng phiên bản 1 khiến tôi gặp phải lỗi ?? – Giszmo

+3

Tôi mất một 20 phút tốt về điều này, vì vậy tôi hy vọng có thể tiết kiệm thời gian cho người khác. Có Chuỗi để định dạng, tôi phải sử dụng ví dụ: Điểm: % .2f %%. Hai% ký tự, kèm theo định dạng. Không có trường hợp nào trong số này hoạt động trong trường hợp này. – donnadulcinea

+0

Điều này làm việc cho tôi, Cảm ơn. – Kedarnath

1

Sử dụng CDATA có thể làm việc ..

<item><![CDATA[100% foo 40%]]></item> 
+0

Không hoạt động với 'CDATA' trừ khi bạn sử dụng' %% '. – mike47

16

Các % là ký tự dành riêng trong XML như <, >, vv. Sử dụng %% cho mỗi % bạn đang sử dụng trong tài nguyên chuỗi.

+3

Bạn hơi muộn với câu trả lời của bạn nhưng cảm ơn anyway: D tôi có thể kiểm tra giải pháp của bạn nếu tôi đi qua phát triển Android sớm nhưng cho tôi đã cố gắng '%' Tôi mặc dù tôi đã làm đủ thoát ra sau đó. '\ %%' chắc chắn đẹp hơn '\ u0025' ... ừm ... có thể không" chắc chắn ". :) – Giszmo

+0

'%%' là người duy nhất làm việc cho tôi. Đây là chuỗi cuối cùng của tôi '(% 1 $ s %% hoa hồng)' dịch, ví dụ, trong '(hoa hồng 2.56%)' – Laranjeiro

+3

% chắc chắn nhất không phải là một ký tự dành riêng trong XML; hạn chế nội dung này dành riêng cho tệp tài nguyên Android. – Cumbayah

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