Апострофу не передує \


77

У мене є рядок, визначений в додатку для android:

<string name="search_occurs">'{string}' occurs {times}</string>

Це призводить до помилки: Апострофу, якому не передує \ (у "{рядок}" трапляється {разів)

Я спробував кілька речей, щоб це виправити:

<string name="search_occurs">\'{string}\' occurs {times}</string>
<string name="search_occurs">&apos;{string}&apos; occurs {times}</string>
<string name="search_occurs"><![CDATA['{string}' occurs {times}]]></string>
<string name="search_occurs"><![CDATA[\'{string}\' occurs {times}]]></string>

Я не можу позбутися помилки. Чого мені не вистачає?


6
\'працює для мене. Просто спробував у Eclipse.
CommonsWare

4
Після того, як я додав зворотну скісну риску перед апострофом, виявилося необхідним Cleanі відновити весь проект для Eclipse, щоб перестати скаржитися на помилку.
Stan

Відповіді:


94

обидва вони повинні працювати відповідно до http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling :

<string name="search_occurs">\'{string}\' occurs {times}</string>
<string name="search_occurs">"'{string}' occurs {times}"</string>

Перший працював у мене, а не другий. Чудова робота
VVB

2
обидва повинні, і в обох випадках андроїд студія обрізає лапки та зворотну косу риску перед збіркою, а також перетворює \ u0027 в одну лапку, а потім відображає помилку.
El

46

просто поставте \ before 'у ваш рядок Це НЕПРАВИЛЬНО Це ІСТИНА :)


Чи існує більш чистий спосіб зробити це? Я локалізую свою програму на французькій мові, і моя папка рядків містить багато тексту. Тож перебирати весь текст і додавати зворотну риску - це, очевидно, не найкраща ідея.
The_Martian

Ні, це єдиний спосіб.
Крум Илиев

@The_Martian У мене така ж проблема, ти знайшов інший спосіб, ніж запропонований?
Ніхто

3

Чому б вам не надати 'рядок, яким ви його замінюєте?

Ви також знаєте такі конструкції?

<string name="profile_age_range_text_between">between %1$d and %2$d</string>
<string name="unit_height_inches">%1$d\'%2$d ft</string>
<string name="unit_distance_miles">%s mi</string>

2

Замініть апостроф ( ' ) на ( \' ) або додайте \ перед кожним (')

примітка: копіювати лише всередині () тексту


2

Переконайтеся, що ви редагуєте правильний файл. Як зазначено у цій відповіді , при появі помилки Android Studio відкриває values.xmlфайл, схожий на ваш вихідний файл. Ви повинні додати \в оригінальний strings.xmlфайл (або де б не був образливий символ). В іншому випадку він буде просто повторювати помилку.


0

У відповідь на https://stackoverflow.com/users/3339394/the-martian Існує загальне рішення для заміни "на", вам потрібно скопіювати текст у редактор слів (наприклад, Notepad ++), а потім скориставшись " замінити "параметр у програмі замінити цілі" на ". (тому що у мене недостатньо репутації, мені довелося написати це у відповідь вибачте!)



-1

Я отримав рішення на основі свого сценарію.

  1. виберіть файл string.xml
  2. Клацніть правою кнопкою миші та відкрийте шоу в провіднику
  3. Відредагуйте рядок із файлу string.xml та збережіть код.
  4. Відкрийте Android-студію та оновіть рішення.

Тепер код буде запущений.

Примітка: я отримав помилку за допомогою апострофа на не може . тож я переодягаюсь у Cannot . Тепер мій сценарій спрацює.

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