Как написать символ & в 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и он будет конвертировать для вас.
Румит Патель

Ответы:



159

Для специальных символов я обычно использую определение Unicode, например '&', например: \ u0026, если я прав. Вот хорошая справочная страница: http://jrgraphix.net/research/unicode_blocks.php?block=0


Этот, кажется, работает лучше всего. $ Amp; выходит из getString () без преобразования. Так что это боль.
Адам

1
У меня это не сработало для некоторых символов, таких как \ u227A.
Луис А. Флорит

для символа use используйте & # 174; и символ товарного знака ™ & # 8482;
Дипак

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;

9

Это должно быть так:

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


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

Это обрабатывает escape-символы, вы можете добавлять символы и символы в соответствующие им массивы.

-Cheers



2

Чтобы избежать ошибки, используйте извлечь строку:

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

Это лучшее решение!
Фаби,

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.