Я объявил длинную строку в string.xml
приложении.
Заявлено так
<string name="terms">PLEASE READ THESE TERMS OF USE CAREFULLY BY ACCESSING THIS .................</string>
Но это дает следующую ошибку:
error: Apostrophe not preceded by \ (in PLEASE READ THESE TERMS OF USE CAREFULLY
Ответы:
опубликуйте свою полную строку. Хотя, я предполагаю, что в вашей строке есть символ апострофа ('). замените его на (\ '), и это решит проблему. например,
Ref:
http://www.mrexcel.com/forum/showthread.php?t=195353
https://code.google.com/archive/p/replicaisland/issues/48
источник
<string name="good_example">"This'll work"</string>
Ссылка: developer.android.com/guide/topics/resources/…Решение
Апострофы в strings.xml должны быть записаны как
пример
В моем случае у меня была ошибка с этой строкой в моем strings.xml, и я исправил ее.
Здесь вы видите, что мое приложение правильно строится с этим кодом.
Вот настоящая строка в моем приложении.
источник
Вы должны поставить \ перед апострофом. Подобно этому \ ', также убедитесь, что вы редактируете strings.xml, а не values.xml (студия Android направляет вас к этому файлу, когда показывает ошибку). Потому что, если вы отредактируете values.xml и попытаетесь снова скомпилировать, ошибка не исчезнет. Это происходило со мной недавно.
источник
https://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling
Как избежать апострофов и цитат
Если у вас есть апостроф или кавычка в вашей строке, вы должны либо экранировать ее, либо заключить всю строку в другой тип заключающих кавычек. Например, вот несколько укусов, которые работают и не работают:
источник
Используйте это регулярное выражение
(?<!\\)'
для поиска неэкранированного апострофа. Он находит апостроф, которому не предшествует обратная косая черта.источник
Я использую иврит (язык RTL) в strings.xml. Я вручную искал в string.xml этот символ: ', затем добавил escape-символ \ перед ним (теперь он выглядит как \') и все еще получил ту же ошибку!
Я снова поискал char 'и заменил char' на \ '(английское письмо), так как он показывает справа налево, похоже, что' \ в strings.xml !!
Задача решена.
источник
Вы можете использовать эквивалент Unicode как апостроф, так и другие символы, которые не поддерживаются в строке xml. Эквивалент апострофа - "\ u0027".
источник
1. для ошибки: неэкранированный апостроф в строке
я обнаружил, что инструмент AAPT2 иногда указывает на неправильную строку в xml. Поэтому вам следует исправить весь файл strings.xml
В Android Studio в проблемном файле используйте:
Правка-> найти-> заменить
Затем напишите в первом поле \ '(или \ &,>, \ <, \ "),
во втором поместите' (или &,>, <,"),
затем замените каждое, если необходимо. (Или "переставьте все" в случае с ' )
Затем в первом поле снова введите '(или &,>, <, "),
а во втором напишите \',
затем замените каждый, если необходимо. (Или" заменить все "в случае с ')
2. для других проблемных символов
я использую, чтобы комментировать каждую следующую половину части + перестраивать, пока я не найду неправильный знак.
Например, экранированное слово "\ update" неожиданно вызывает ошибку :)
источник
Лучший ответ - просто избежать с
'
помощью\'
работает, но мне не нравится решение, потому что при использовании replace all with'
to\'
оно работает только один раз. Во второй раз останетесь с\\'
.Поэтому, используйте:
\u0027
.источник