Android में strings.xml फ़ाइल में त्रुटि


114

मैंने string.xmlएक आवेदन में एक लंबी स्ट्रिंग घोषित की है ।

इस तरह की घोषणा की

<string name="terms">PLEASE READ THESE TERMS OF USE CAREFULLY  BY ACCESSING THIS .................</string>

लेकिन यह निम्नलिखित त्रुटि देता है:

error: Apostrophe not preceded by \ (in PLEASE READ THESE TERMS OF USE CAREFULLY

1
त्रुटि है, क्योंकि स्ट्रिंग में बहुत सारे डॉट्स हैं। `त्रुटि: एपोस्ट्रोफ` से पहले नहीं है एक डमी संदेश है, समस्या डॉट्स में है। जैसा कि मुझे याद है, तीन से अधिक डॉट के बाद आप त्रुटि प्राप्त कर सकते हैं।
ड्यूडिस्ट

जवाबों:


293

अपनी पूरी स्ट्रिंग पोस्ट करें। हालांकि, मेरा अनुमान है कि आपके स्ट्रिंग में एक एपोस्ट्रोफ (') चरित्र है। इसे (\ ') से बदलें और यह समस्या को ठीक करेगा। उदाहरण के लिए,

//strings.xml
<string name="terms">
Hey Mr. Android, are you stuck?  Here, I\'ll clear a path for you.  
</string>

संदर्भ:

http://www.mrexcel.com/forum/showthread.php?t=195353

https://code.google.com/archive/p/replicaisland/issues/48


30
क्यों इस मूर्खतापूर्ण आवश्यकता के बारे में कोई बात नहीं कर रहा है कि हम स्ट्रिंग डेटा में हर एक एपोस्ट्रोफ से बच जाते हैं? CDATA सेक्शन के भीतर भी!
फिल कुलक

2
@PhilKulak हेह, यह उदाहरण के लिए फ्रेंच के साथ बहुत पागल है। हम खोज करेंगे और ftw को बदल देंगे।
तानापिट

4
@PhilKulak Android स्ट्रिंग्स.xml में, आप पूरे स्ट्रिंग को अन्य प्रकार के <string name="good_example">"This'll work"</string>
एन्क्लोज़िंग

यह एक समस्या पैदा कर सकता है जब आपके पास बहुत सारे तार हैं और सभी का उपयोग करें। मेरा जवाब देखिए।
डेन ब्रे

26

उपाय

में अपॉस्ट्राफी strings.xml के रूप में लिखा जाना चाहिए

\'


उदाहरण

मेरे मामले में मेरे तार में इस स्ट्रिंग के साथ एक त्रुटि थी । xml और मैंने इसे ठीक कर दिया।

<item>Most arguments can be ended with three words, "I don\'t care".</item>

यहां आप देख सकते हैं कि मेरा ऐप उस कोड के साथ ठीक से बना है।

यहां छवि विवरण दर्ज करें

यहाँ मेरे ऐप में वास्तविक स्ट्रिंग है।

यहां छवि विवरण दर्ज करें


1
मूर्खतापूर्ण मुझे, जब से मैं XML का उपयोग कर रहा था, मैं & apos; का उपयोग कर रहा था; और यह एक त्रुटि भी है।
क्रिस वेस्टिन

12

आपको एपोस्ट्रोफ से पहले \ _ लगाना होगा। इस \ 'की तरह, यह भी जाँचें कि आप स्ट्रिंग्स को संपादित कर रहे हैं। xml और मानों को नहीं। xml (एंड्रॉइड स्टूडियो आपको त्रुटि दिखाने पर इस फ़ाइल पर निर्देशित करता है)। क्योंकि यदि आप मानों को संपादित करते हैं। xml और फिर से संकलित करने का प्रयास करते हैं, तो त्रुटि बनी रहती है। हाल ही में मेरे साथ ऐसा हो रहा था।


1
Haha! मेरे साथ भी वही हुआ। एपोस्ट्रोफ ने ठीक उसी कारण से पॉपिंग को बनाए रखा। मुझे पागल कर रहा था।
DrMcCleod 13

10

https://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling

एपोस्ट्रोफ और उद्धरण से बचना

यदि आपके पास आपके स्ट्रिंग में एक एपॉस्ट्रॉफी या एक उद्धरण है, तो आपको या तो इसे बचना चाहिए या अन्य स्ट्रिंग के अन्य प्रकार के उद्धरणों में पूरे स्ट्रिंग को संलग्न करना होगा। उदाहरण के लिए, यहां कुछ स्टिंग हैं जो काम नहीं करते हैं:

<string name="good_example">"This'll work"</string>
<string name="good_example_2">This\'ll also work</string>
<string name="bad_example">This doesn't work</string>
<string name="bad_example_2">XML encodings don&apos;t work</string>

6

(?<!\\)'एक अप्रकाशित एपोस्ट्रोफ की खोज के लिए इस रेगेक्स का उपयोग करें । यह एक एपॉस्ट्रॉफ़ पाता है जो बैकस्लैश से पहले नहीं था।


4

मैं स्ट्रिंग्स.एक्सएमएल में हेब्रेव (आरटीएल भाषा) का उपयोग करता हूं। मैंने मैन्युअल रूप से इस char के लिए string.xml खोजा है: 'इससे ​​बचने के लिए मैंने इसमें char char का उल्लंघन किया (अब यह like \' दिखता है) और अभी भी वही त्रुटि मिली है!

मैंने चर के लिए फिर से खोज की और मैंने चर को 'with' ('एंग राइटिंग') से बदल दिया, क्योंकि यह बाएं से दाएं दिखाता है, ऐसा लगता है कि स्ट्रिंग्स.एक्सएमएल में ''!

समस्या सुलझ गयी।


@akauppi, यह टिप्पणी RTL भाषाओं के डेवलपर्स के लिए अधिक है, क्योंकि हम ऐसे संपादकों से मुठभेड़ करते हैं जो स्क्रीन पर एक गलत क्रम में वर्णों को दिखाकर, RTL को बहुत अच्छी तरह से संभाल नहीं सकते हैं। xml में लंबे समय तक हेब्रेंड की सजा टाइप करने से गड़बड़ हो सकती है
Li3ro

आह, दाएँ-से-बाएँ। अब सब समझ आ रहा है। धन्यवाद।
एकुप्पी

3
हमने हिब्रू अपोस्ट्रोफ़्स के लिए दोनों पक्षों पर बचकर हल किया: \ '
रेडली

2

आप एपोस्ट्रोफ और एक्सएमएल स्ट्रिंग में समर्थित नहीं होने वाले अन्य वर्णों के बराबर यूनिकोड का उपयोग करने में सक्षम हो सकते हैं। एपोस्ट्रोफ का समकक्ष "\ u0027" है।


1

1. त्रुटि के लिए: स्ट्रिंग में अनसैप्ड एपोस्ट्रोफ

मैंने पाया कि AAPT2 टूल कभी-कभी xml में गलत रो की ओर इशारा करता है। तो आपको पूरे strings.xml फ़ाइल को सही करना चाहिए

एंड्रॉइड स्टूडियो में, समस्या फ़ाइल उपयोग में:

संपादित करें> find-> की जगह

फिर पहले फ़ील्ड में लिखें '' (या \ _ ,>, \ <, \ ")
दूसरे पुट में '(या &,>, <,")
तब प्रत्येक को प्रतिस्थापित करें यदि आवश्यक हो। (या "सभी के साथ" सरीसृप)। )
फिर पहले क्षेत्र में फिर से '(या &,>, <, ")
और दूसरे राइट में \ _
तब जरूरत पड़ने पर प्रत्येक को प्रतिस्थापित करें। (या" सभी को प्रतिस्थापित करें "के साथ।

2. अन्य समस्याग्रस्त प्रतीकों के लिए
मैं प्रत्येक अगले आधे भाग को टिप्पणी करने के लिए उपयोग करता हूं + तब तक पुनर्निर्माण करता हूं जब तक कि मुझे गलत संकेत नहीं मिलेगा।

उदाहरण के लिए एक बचा हुआ शब्द "अपडेट" अप्रत्याशित रूप से ऐसी त्रुटि छोड़ देता है :)


1

बस काम के 'साथ भागने का सबसे अच्छा जवाब है, \'लेकिन मुझे समाधान पसंद नहीं है क्योंकि जब सभी के साथ प्रतिस्थापित करते 'हैं \', तो यह केवल एक बार काम करता है। दूसरी बार जब आप साथ रहेंगे \\'

इसलिए, उपयोग करें \u0027:।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.