J'ai déclaré une longue chaîne dans string.xml
d'une application.
Déclaré comme ça
<string name="terms">PLEASE READ THESE TERMS OF USE CAREFULLY BY ACCESSING THIS .................</string>
Mais cela donne l'erreur suivante:
error: Apostrophe not preceded by \ (in PLEASE READ THESE TERMS OF USE CAREFULLY
postez votre chaîne complète. Cependant, je suppose que votre chaîne contient un caractère apostrophe ('). remplacez-le par (\ ') et le problème sera résolu. par exemple,
//strings.xml
<string name="terms">
Hey Mr. Android, are you stuck? Here, I\'ll clear a path for you.
</string>
Ref:
Les apostrophes dans strings.xml doivent être écrits ainsi:
\'
Dans mon cas, j'ai eu une erreur avec cette chaîne dans mon strings.xml et je l'ai corrigée.
<item>Most arguments can be ended with three words, "I don\'t care".</item>
Ici, vous voyez que mon application se construit correctement avec ce code.
Voici la chaîne réelle dans mon application.
Vous devez mettre\avant une apostrophe. Comme ceci\', vérifiez également que vous modifiez le fichier strings.xml et non le fichier values.xml (le studio Android vous dirige vers ce fichier lorsqu'il affiche l’erreur). En effet, si vous modifiez values.xml et essayez de compiler à nouveau, l'erreur persiste. Cela m'arrivait récemment.
https://developer.Android.com/guide/topics/resources/string-resource.html#FormattingAndStyling
Échappe aux apostrophes et aux guillemets
Si vous avez une apostrophe ou une citation dans votre chaîne, vous devez soit y échapper, soit inclure toute la chaîne dans l'autre type de guillemets. Par exemple, voici quelques cas qui fonctionnent et ne fonctionnent pas:
<string name="good_example">"This'll work"</string>
<string name="good_example_2">This\'ll also work</string>
<string name="bad_example">This doesn't work</string>
<string name="bad_example_2">XML encodings don't work</string>
J'utilise l'hébreu (langage RTL) dans strings.xml. J'ai cherché manuellement le string.xml pour ce caractère: 'que j'ai ajouté le caractère d'échappement\infront (maintenant il ressemble à \') et j'ai toujours la même erreur!
J'ai cherché à nouveau le caractère 'et j'ai remplacé le caractère' par\'(écriture en anglais), car il affiche un sens de droite à gauche, il ressemble à cela' dans le fichier strings.xml !!
Problème résolu.
Où est ton apostrophe utilisé string? Je ne trouve pas ça. s'il vous plaît poster. Si vous devez utiliser une apostrophe dans votre chaîne, utilisez simplement la séquence d'échappement "\ '" comme ceci.
n’a pas = n’a pas en XML, il suffit de regarder les chaînes Le dernier élément de .xml.
Je pense que l'image ci-dessus effacera vos doutes.
Utilisez cette expression rationnelle (?<!\\)'
pour la recherche d'une apostrophe non échappée. Il trouve une apostrophe qui n'est pas précédée d'une barre oblique inverse.
Vous pourrez peut-être utiliser l'équivalent unicode des caractères apostrophe et autres qui ne sont pas pris en charge par la chaîne xml. L'équivalent de l'Apostrophe est "\ u0027".
1. pour erreur: apostrophe non échappée dans la chaîne
ce que j'ai trouvé, c'est que l'outil AAPT2 pointe parfois sur une mauvaise ligne dans XML. Donc, vous devez corriger le fichier entier strings.xml
Dans Android Studio, utilisation de fichier problématique:
Éditer-> trouver-> remplacer
Puis écrivez dans le premier champ\'(ou\&,>,\<,\")
en deuxième position '(ou &,>, <, ")
puis remplacez-les si nécessaire (ou "reptlacez tous" dans le cas où vous avez ')
Puis dans le premier champ, mettez à nouveau '(ou &,>, <, ")
et en deuxième écriture\'
puis remplacez-les si nécessaire (ou "remplacez tout" dans le cas où vous avez ')
2. Pour les autres symboles problématiques
J'avais l'habitude de commenter chaque demi-partie suivante + de reconstruire jusqu'à ce que je ne trouve pas le mauvais signe.
Par exemple. un mot échappé "\ update" supprime de manière inattendue une telle erreur :)
La meilleure réponse de simplement échapper à la '
avec \'
fonctionne mais je n’aime pas la solution car lors de l’utilisation tout remplacer par '
à \'
, cela ne fonctionne qu'une fois. La deuxième fois, vous vous retrouvez avec \\'
.
Par conséquent, utilisez: \u0027
.