Palo
Palo

Reputation: 10771

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?

Upvotes: 508

Views: 352776

Answers (14)

Ghayas
Ghayas

Reputation: 1324

& in string like:

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

Output will be:

Translate & Scan Objects

Upvotes: 8

user3194684
user3194684

Reputation: 81

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>

Upvotes: 0

user3194684
user3194684

Reputation: 81

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>

Upvotes: 0

Hai Rom
Hai Rom

Reputation: 1811

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

Upvotes: 86

Mubarak Tahir
Mubarak Tahir

Reputation: 207

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"

Upvotes: 1

MetaPlanet
MetaPlanet

Reputation: 129

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

Upvotes: 1

Khemraj Sharma
Khemraj Sharma

Reputation: 59004

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;

Upvotes: 30

Thamays
Thamays

Reputation: 3098

To avoid the error, use extract string:

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

Upvotes: 4

Hoque MD Zahidul
Hoque MD Zahidul

Reputation: 11989

You can write in this way

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

Output: You & Me

Upvotes: 1

Faruk
Faruk

Reputation: 5841

It should be like this :

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

Upvotes: 10

ralphgabb
ralphgabb

Reputation: 10538

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

Upvotes: 5

caulitomaz
caulitomaz

Reputation: 2351

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>

Upvotes: 6

Moss
Moss

Reputation: 6012

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

Upvotes: 170

Bob Fincheimer
Bob Fincheimer

Reputation: 18076

Encode it:

&amp;

Upvotes: 1182

Related Questions