วิธีเขียนตัวอักษร & ใน android strings.xml


430

ฉันเขียนสิ่งต่อไปนี้ในstrings.xmlไฟล์:

<string name="game_settings_dragNDropMove_checkBox">Move by Drag&Drop</string>

ฉันได้รับข้อผิดพลาดต่อไปนี้:

The reference to entity "Drop" must end with the ';' delimiter.

ฉันจะเขียนตัวอักษร & ใน strings.xml ได้อย่างไร


6
ใน android studio คุณสามารถกดAlt+Enterและมันจะแปลงให้คุณ
Rumit Patel

คำตอบ:



159

สำหรับอักขระพิเศษปกติแล้วฉันจะใช้คำนิยาม Unicode เช่น '&' เช่น: \ u0026 ถ้าฉันถูกต้อง นี่คือหน้าอ้างอิงที่ดี: http://jrgraphix.net/research/unicode_blocks.php?block=0


อันนี้ดูเหมือนจะทำงานได้ดีที่สุด $ amp; ออกมาจาก getString () โดยไม่ถูกแปลง ดังนั้นมันจึงเป็นความเจ็บปวด
อดัม

1
สิ่งนี้ใช้ไม่ได้สำหรับสัญลักษณ์บางอย่างเช่น \ u227A
Luis A. Florit

สำหรับสัญลักษณ์ use ใช้ & # 174; และสัญลักษณ์เครื่องหมายการค้า™ & # 8482;
Deepak

55

นี่เป็นปัญหาของฉันทางออกของฉันมีดังต่อไปนี้: ใช้&gt;สำหรับ<, &lt;สำหรับ>, &amp;สำหรับ&, "'"สำหรับ', &quotสำหรับ\"\"


1
ไม่สามารถแก้ไขสิ่งนี้ได้เนื่องจากการเปลี่ยนแปลงมีขนาดเล็กแสดงความคิดเห็นแทน คุณควรอ่าน Use &gt; for >, &lt;for <
Jose_GD

13

แม้แต่คำถามของคุณก็ยังได้รับคำตอบ แต่ฉันก็ยังต้องการบอกเอนทิตีแบบเดียวกันนี้ เหล่านี้คือhtml entitiesดังนั้นใน Android คุณจะเขียนพวกเขาชอบ:

แทนที่ด้านล่างด้วย:

& with &amp;
> with &gt;
< with &lt;
" with &quot;, &ldquo; or &rdquo;
' with &apos;, &lsquo; or &rsquo;
} with &#125;



4

นอกจากนี้ยังสามารถใส่เนื้อหาของสตริงลงใน XML CDATA เช่นเดียวกับ Android Studio ที่ทำเพื่อคุณเมื่อคุณ Extract string resource

<string name="game_settings_dragNDropMove_checkBox"><![CDATA[Move by Drag&Drop]]></string>


3

นี่อาจจะเก่ามาก แต่สำหรับผู้ที่กำลังมองหารหัสอย่างรวดเร็ว

 public String handleEscapeCharacter( String str ) {
    String[] escapeCharacters = { "&gt;", "&lt;", "&amp;", "&quot;", "&apos;" };
    String[] onReadableCharacter = {">", "<", "&", "\"\"", "'"};
    for (int i = 0; i < escapeCharacters.length; i++) {
        str = str.replace(escapeCharacters[i], onReadableCharacter[i]);
    } return str;
 }

ที่จัดการกับตัวละครหนีคุณสามารถเพิ่มตัวละครและสัญลักษณ์ในอาร์เรย์ของตน

-Cheers



2

เพื่อหลีกเลี่ยงข้อผิดพลาดใช้แยกสตริง:

<string name="travels_tours_pvt_ltd"><![CDATA[Travels & Tours (Pvt) Ltd.]]></string>

นี่คือทางออกที่ดีที่สุด!
Fabi

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.