2012-02-21 17 views
16

में एक से अधिक "%" वर्ण भागने < स्ट्रिंग सरणी नाम = "संस्करण" में> मैं एक प्रविष्टि के इस जानवर (एक उचित न्यूनतम करने के लिए नीचे उबला हुआ प्रभाव पुन: पेश करने) है:एंड्रॉयड

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

जो इन त्रुटियों को पैदा करता है:

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 

जोड़ना = स्वरूपित "गलत" एक बात नहीं बदलता है।

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

परिणाम एक ही त्रुटि संदेश में परिणाम। WTH?

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

सभी ठीक काम करेंगे। \% के साथ इसे से बचने के लिए केवल उसी त्रुटि में अनदेखा किया जाता है। %% में कोई त्रुटि नहीं होती है लेकिन मुझे %% मिलता है।

+0

http://stackoverflow.com/questions/4414389/android-xml-percent-symbol/4417333#4417333, जो आप कहते हैं, वह अधिकांश काम नहीं करेगा, लेकिन अंतिम विकल्प देखें। उत्तर के लिए –

+0

Thanx। दुर्भाग्य से मैं एक स्ट्रिंग से निपट नहीं रहा हूं जो प्रतिस्थापन को तब तक अनुमति दे सकता है जब तक कि सरणी में प्रतिस्थापन करने का कोई तरीका न हो। मेरे arrays.xml में आइटम के साथ एक स्ट्रिंग-सरणी है। ये मैं getResources() के माध्यम से लोड करता हूं। GetStringArray (R.array.versions); – Giszmo

+0

ouch, getStringArray फ़ॉर्मेटर का उपयोग करता है और फिर भी आपको प्रारूप तर्क पास करने की अनुमति नहीं देता है। मुझे डर है कि आपको इसे लोड करने के बाद सरणी को फिर से बनाना होगा,% में प्रतिस्थापित करना होगा, या स्ट्रिंग को सही करते समय सही करें। –

उत्तर

21

एक्सएमएल में एक यूनिकोड चरित्र के रूप में प्रत्येक एन्कोडिंग मेरे लिए काम करता है:

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

ठीक है, मुझे लगता है कि यह जाने का रास्ता होना चाहिए। फिर भी मैं समझना चाहता हूं कि क्यों % और \ u0025% हैं लेकिन संस्करण 1 मुझे त्रुटि में चलाता है ?? – Giszmo

+3

मैंने इस पर एक अच्छा 20 मिनट खो दिया, इसलिए मुझे उम्मीद है कि किसी और के लिए समय बचा सकता है। स्वरूपित करने के लिए स्ट्रिंग होने के बाद, मुझे उदाहरण का उपयोग करना पड़ा, स्कोर: % .2f %%। प्रारूप से जुड़ा दो% चरित्र। उपर्युक्त में से कोई भी इस मामले में काम नहीं करता है। – donnadulcinea

+0

यह मेरे लिए काम किया, धन्यवाद। – Kedarnath

1

CDATA का उपयोग करते हुए काम कर सकते हैं ..

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

जब तक आप '%%' का उपयोग नहीं करते हैं, तब तक 'सीडीएटीए' के ​​साथ काम नहीं करते हैं। – mike47

16

%<, > तरह XML में एक आरक्षित वर्ण है, आदि प्रत्येक % के लिए %% का उपयोग करें जो आप स्ट्रिंग संसाधन में उपयोग कर रहे हैं।

+3

आप अपने उत्तर के साथ थोड़ा देर हो चुकी हैं लेकिन वैसे भी धन्यवाद: डी अगर मैं जल्द ही एंड्रॉइड विकास में आता हूं तो मैं आपके समाधान का परीक्षण कर सकता हूं लेकिन दिया गया है कि मैंने '%' कोशिश की थी, हालांकि मैंने वापस भागने के लिए काफी कुछ किया था। '\ %%' निश्चित रूप से '\ u0025' से बेहतर है ... अच्छा ... शायद" निश्चित रूप से "नहीं। :) – Giszmo

+0

'%% 'केवल यही था जो मेरे लिए काम करता था। यह मेरा अंतिम स्ट्रिंग '(% 1 $ s %% कमीशन)' अनुवाद करता है, उदाहरण के लिए, '(2.56% कमीशन) ' – Laranjeiro

+3

% में निश्चित रूप से एक्सएमएल में आरक्षित चरित्र नहीं है; यह सामग्री प्रतिबंध एंड्रॉइड संसाधन फ़ाइलों के लिए विशिष्ट है। – Cumbayah