W aplikacji zadeklarowałem długi ciąg znaków string.xml
.
Tak zadeklarowano
<string name="terms">PLEASE READ THESE TERMS OF USE CAREFULLY BY ACCESSING THIS .................</string>
Ale to daje następujący błąd:
error: Apostrophe not preceded by \ (in PLEASE READ THESE TERMS OF USE CAREFULLY
Odpowiedzi:
opublikuj swój pełny ciąg. Chociaż sądzę, że w twoim ciągu znajduje się znak apostrofu ('). zamień go na (\ '), a to rozwiąże problem. na przykład,
Odniesienie:
http://www.mrexcel.com/forum/showthread.php?t=195353
https://code.google.com/archive/p/replicaisland/issues/48
źródło
<string name="good_example">"This'll work"</string>
Reference: developer.android.com/guide/topics/resources/ ...Rozwiązanie
Apostrofy w pliku strings.xml powinny być zapisane jako
Przykład
W moim przypadku wystąpił błąd z tym ciągiem w moim pliku strings.xml i naprawiłem go.
Tutaj widzisz, że moja aplikacja kompiluje się poprawnie z tym kodem.
Oto rzeczywisty ciąg znaków w mojej aplikacji.
źródło
Musisz umieścić \ przed apostrofem. W ten sposób \ ', sprawdź również, czy edytujesz strings.xml, a nie values.xml (Android Studio kieruje do tego pliku, gdy wyświetla błąd). Ponieważ jeśli edytujesz values.xml i spróbujesz ponownie skompilować, błąd będzie się powtarzał. Przydarzyło mi się to ostatnio.
źródło
https://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling
Unikanie apostrofów i cytatów
Jeśli masz apostrof lub cudzysłów w swoim ciągu, musisz albo uciec przed nim, albo ująć cały ciąg w inny typ otaczającego cudzysłowu. Na przykład, oto kilka użądleń, które działają i nie działają:
źródło
Użyj tego wyrażenia regularnego
(?<!\\)'
do wyszukiwania apostrofu bez znaku zmiany znaczenia. Znajduje apostrof, który nie jest poprzedzony ukośnikiem.źródło
Używam hebrajskiego (język RTL) w strings.xml. Ręcznie przeszukałem string.xml pod kątem tego znaku: ', a następnie dodałem znak ucieczki \ infront tego (teraz wygląda na \') i nadal otrzymuję ten sam błąd!
Szukałem ponownie znaku 'i zamieniłem znak' na \ '(pisanie ang), ponieważ pokazuje on od prawej do lewej, wygląda tak' \ w strings.xml !!
Problem rozwiązany.
źródło
Możesz użyć ekwiwalentu Unicode zarówno apostrofu, jak i innych znaków, które nie są obsługiwane w ciągu xml. Odpowiednikiem apostrofu jest „\ u0027”.
źródło
1. dla błędu: apostrof bez znaku zmiany znaczenia w ciągu
odkryłem, że narzędzie AAPT2 wskazuje czasami na zły wiersz w XML. Więc powinieneś poprawić cały plik strings.xml
W Android Studio w przypadku plików problemowych:
Edytuj-> znajdź-> zamień
Następnie wpisz w pierwszym polu \ '(lub \ &,>, \ <, \ ")
w drugim miejscu' (lub &,>, <,"),
a następnie zamień je w razie potrzeby. (Lub „zamień wszystko” w przypadku znaku „ )
Następnie w pierwszym polu ponownie umieść '(lub &,>, <, "),
a w drugim napisz \'
i zamień je w razie potrzeby. (Lub" zamień wszystko "w przypadku ')
2. dla innych problematycznych symboli,
których używam do komentowania każdej następnej połowy części + przebudowy, aż nie znajdę złego znaku.
Np. Słowo ucieczki „\ update” nieoczekiwanie usuwa taki błąd :)
źródło
Najlepsza odpowiedź na to, że po prostu ucieczka z
'
z\'
działa, ale nie podoba mi się to rozwiązanie, ponieważ przy użyciu zamień wszystko'
na\'
to działa tylko raz. Za drugim razem zostaniesz z\\'
.W związku z tym, należy:
\u0027
.źródło