ChatGPT解决这个技术问题 Extra ChatGPT

How to write character & in android strings.xml

I wrote the following in the strings.xml file:

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

I got the following error:

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

How can I write character & in the strings.xml?

In android studio, you can simply press Alt+Enter and it will convert for you.

B
Bob Fincheimer

Encode it:

&amp;

If using CDATA then be aware that some characters are reserved. © -> &copy; Refer to this article. w3schools.com/html/html_entities.asp
\u0026 Better to use unicode as suggested by @Moss
M
Moss

For special character I normally use the Unicode definition, for the '&' for example: \u0026 if I am correct. Here is a nice reference page: http://jrgraphix.net/research/unicode_blocks.php?block=0


This one seems to work the best. The $amp; comes out of getString() without being converted. So it's a pain.
This didn't work for me for some symbols, like \u227A.
for Ⓡ symbol use ® and trademark ™ symbol ™
M
Mobile Developer iOS Android

This is a my issues, my solution is as following: Use &gt; for >, &lt;for < , &amp; for & ,"'" for ' , &quot for \"\"


Cannot edit this because the change is tiny, leaving comment instead. It should read Use &gt; for >, &lt;for <
K
Khemraj Sharma

Even your question is answered, still i want tell more entities same like this. These are html entities, so in android you will write them like:

Replace below with:

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

f
faruk

It should be like this :

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

c
caulitomaz

It is also possible put the contents of your string into a XML CDATA, like Android Studio does for you when you Extract string resource

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


r
ralphgabb

This may be very old. But for those whose looking for a quick code.

 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;
 }

That handles escape characters, you can add characters and symbols on their respective arrays.

-Cheers


G
Gowthaman M

To avoid the error, use extract string:

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

G
Ghayas

& in string like:

<string name="string_abc">Translate &amp; Scan Objects</string>

Output will be:

Translate & Scan Objects


G
Gowthaman M

You can write in this way

<string name="you_me">You &#38; Me<string>

Output: You & Me


M
MetaPlanet

Mac and Android studio users:

Type your char such as & in the string.xml or layout and choose "Option" and "return" keys. Please refer the screen shot


M
Mubarak Tahir

If you want to hardcode the string in xml directly, you can add it up this way.

  <TextView 
     android:layout_marginStart="5dp"
     android:layout_marginLeft="5dp"
     android:layout_centerVertical="true"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="You &amp; Me"

u
user3194684

The simplest way I've found is to replace the '&' with the Unicode equivalent. So for the example given write:

<string name="game_settings_dragNDropMove_checkBox">Move by Drag\u0026Drop</string>

u
user3194684

I'm posting this because none of the above encodings worked for me.

I found that replacing the ampersand with the sequence: &#38; worked as an xml string resource. As in:

<string name="webLink"><a href="https://www.example.com?param1=option1&#38;param2=option2">click here</a></string>