Como escrever caracteres e no android strings.xml


430

Eu escrevi o seguinte no strings.xmlarquivo:

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

Eu recebi o seguinte erro:

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

Como escrever caracteres & no strings.xml?


6
No estúdio android, você pode simplesmente pressionar Alt+Entere ele será convertido para você.
Rumit Patel

Respostas:



159

Para caracteres especiais, normalmente uso a definição Unicode, para '&' por exemplo: \ u0026, se estiver correto. Aqui está uma boa página de referência: http://jrgraphix.net/research/unicode_blocks.php?block=0


Este parece funcionar melhor. O $ amp; sai de getString () sem ser convertido. Então é uma dor.
Adam

1
Isso não funcionou para alguns símbolos, como \ u227A.
Luis A. Florit

para Ⓡ use o símbolo & # 174; e símbolo da marca registrada ™ & # 8482;
Deepak

55

Este é um dos meus problemas, minha solução é a seguinte: Use &gt;para <, &lt;para >, &amp;para &, "'"para ', &quotpara\"\"


1
Não é possível editar isso porque a alteração é pequena, deixando um comentário. Deveria ler-se Use &gt; for >, &lt;for <
Jose_GD

13

Mesmo sua pergunta é respondida, ainda quero dizer mais entidades iguais a esta. Estes são html entities, então no android você os escreverá como:

Substitua abaixo por:

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

9

Deve ser assim:

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


4

Também é possível colocar o conteúdo da sua string em um CDATA XML, como o Android Studio faz quando você Extract string resource

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


3

Isso pode ser muito antigo. Mas para aqueles que procuram um código rápido.

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

Que lida com caracteres de escape, você pode adicionar caracteres e símbolos em suas respectivas matrizes.

-Felicidades


2

Você pode escrever dessa maneira

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

Saída: você e eu


2

Para evitar o erro, use extrair string:

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

Essa é a melhor solução!
Fabi

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.