Як додати "-" у файл string.xml


81

Мені потрібно мати можливість вставити "-" у рядок усередині мого strings.xmlфайлу.

Моя проблема полягає в тому, що коли я ставлю свій рядок, який є "1261eba2-9d8c-11e1-93e3-40409e0f44a1", затемнення кричить:

У цьому рядку знайдено кілька анотацій: - Замініть "-" символом "en dash" (-, &; # 8211;)

Як я можу це виправити?


1
де саме вам потрібно це значення? Це тег, значення тегу чи значення атрибута?
rekaszeru

2
замінити "-" на "\ -"
carmen_munich

Відповіді:


119

Отже, коли ви прочитаєте повідомлення про помилку, ваша відповідь буде такою, яку вам доведеться замінити -на –. Тоді це має працювати нормально =)

http://en.wikipedia.org/wiki/Dash


4
Це нормально, коли ви просто хочете показати рядок користувачеві. Користувач не може насправді сказати, що ви "обманюєте" подібним виглядом символом унікоду. Якщо ви просто хочете скористатися звичайною дефісом, дивіться цю відповідь: stackoverflow.com/a/10895509/78234
Тал Вайс

2
Я думаю, що код призначений для endash, а не звичайний дефіс.
John61590

Я, це тире, а не дефіс thepunctuationguide.com/en-dash.html
Blundell

84

Інші відповіді - це нормально, коли ви хочете показати рядок користувачеві. Користувач насправді не може відрізнити різницю між "справжньою" рискою та хитрощами Unicode.
Але, якщо ви дійсно повинні мати тире (наприклад, тому, що цей рядок десь використовується як пароль або як ключ URL-адреси для API), ви можете просто використовувати такий формат:

<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="TypographyDashes">
    <string name="EVA_API_KEY">3c42b725-5e20-41c8-982f-dee40be8a05b</string>
</resources>

Попередження буде видалено, і рядок можна прочитати за допомогою звичайного:

getResources().getString(R.string.EVA_API_KEY);

3
це найкраща відповідь. Дякую.
Гільєрмо Тобар

10
Одна порада: можливо, ви захочете помістити частину tools: ignore = "TypographyDashes" у лише ті теги <string>, яким насправді потрібен справжній тире.
Dan J

1
З якоїсь причини це спрацювало у мене лише тоді, коли я помістив ігнор у рядок, який я використовую. Дякую за відповідь. Я з’ясував, що це неправильний тире, але як змусити його працювати не так просто.
Mathijs Segers

1
Я намагався запустити телефонний набір 9-1-1, і ваша відповідь була для цього ключовою. Дякую!
Roisgoen

14

Використовуйте косу риску (\) перед кожним спеціальним символом. як я \ & android.

Це називається символом втечі. (\)


Думаю, ви маєте на увазі додати символ втечі: "\" перед кожним спеціальним символом.
малював212

en.wikipedia.org/wiki/Escape_character Евакуаційний символ є зворотною рискою рискою - "\" не косою рискою вперед - "/"
drew212

перевірте мою відповідь зараз. це зворотна коса риса ().
RajaReddy PolamReddy

5
коли я використовую те, що всі ви плануєте, видаляючи символ "-" ... що я отримую: 1261eba29d8c11e193e340409e0f44a1 insted of 1261eba2-9d8c-11e1-93e3-40409e0f44a1 ...
roiberg

4

Тире - це розділовий знак, який схожий на дефіс або знак мінус, але відрізняється від обох цих символів насамперед довжиною та функцією. Найбільш поширеними версіями тире є en dash (-) та em dash (-), названі відповідно довжині малих літер n і великих M відповідно.

Довідково

Просто замініть -на, тому що коли ви вводите тире на клавіатурі, XML читає тире як мінус, і все.



1

У вас, напевно, є таке:

<string name="test1">1261eba2-9d8c-11e1-93e3-40409e0f44a1</string>

Але вам потрібен один із цих варіантів:

<string name="test2">1261eba2&#8211;9d8c&#8211;11e1&#8211;93e3&#8211;40409e0f44a1</string>
<string name="test3">1261eba2–9d8c–11e1–93e3–40409e0f44a1</string>

У другому - - замінюється на -. Візуально важко відрізнити різницю.


1
Будьте обережні: якщо ви зміните ці символи в URL-адресі, це може перестати працювати (моя).
Dan J

Я хочу замінити короткий символ тире (n-тире) на екрановану послідовність. Але &#8211;схоже на його послідовність виходу для довгого символу тире (m-тире).
toobsco42

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.