134 votes

Erreur dans le fichier strings.xml dans Android

J'ai déclaré une longue chaîne de caractères dans string.xml d'une application.

Déclaré comme ceci

<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

1 votes

L'erreur est, parce que trop de points dans la chaîne. Erreur : Apostrophe non précédée de ` est un message factice, le problème est dans les points. Si je me souviens bien, après plus de trois points, vous pouvez obtenir une erreur.

340voto

Priyank Points 4927

Postez votre chaîne complète. Cependant, je pense qu'il y a une apostrophe (') dans votre chaîne. Remplacez-la 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>

Réf :

http://www.mrexcel.com/forum/showthread.php?t=195353

https://code.google.com/archive/p/replicaisland/issues/48

36 votes

Pourquoi personne ne parle de cette exigence idiote d'échapper à chaque apostrophe dans les chaînes de données ? Même dans les sections CDATA !

3 votes

@PhilKulak heh, c'est assez fou avec le français par exemple. On va chercher et remplacer ftw.

7 votes

@PhilKulak Dans le fichier strings.xml d'Android, vous pouvez entourer toute la chaîne de caractères de l'autre type de guillemets, par exemple <string name="good_example">"This'll work"</string> Référence : developer.Android.com/guide/topics/resources/

34voto

JGallardo Points 1423

Solution

Les apostrophes dans le strings.xml devrait s'écrire comme suit

\'

Exemple

Dans mon cas, j'ai eu une erreur avec cette chaîne dans mon fichier strings.xml et je l'ai réparé.

<item>Most arguments can be ended with three words, "I don\'t care".</item>

Vous voyez ici que mon application se construit correctement avec ce code.

enter image description here

Voici la chaîne réelle dans mon application.

enter image description here

19voto

situee Points 1265

https://developer.Android.com/guide/topics/resources/string-resource.html#FormattingAndStyling

Échapper aux apostrophes et aux guillemets

Si vous avez une apostrophe ou un guillemet dans votre chaîne, vous devez soit l'échapper, soit entourer toute la chaîne de l'autre type de guillemets. Par exemple, voici quelques phrases 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&apos;t work</string>

12voto

Walmac Points 163

Tu dois mettre le \Navant une apostrophe. Comme ceci '\' , Vérifiez également que vous éditez strings.xml et non values.xml (Android studio vous dirige vers ce fichier lorsqu'il affiche l'erreur). Car si vous éditez values.xml et essayez de compiler à nouveau, l'erreur persiste. Cela m'est arrivé récemment.

8voto

Elad Finish Points 81

Utilisez cette regex (?<!\\)' pour la recherche d'une apostrophe non marquée. Elle trouve une apostrophe qui n'est pas précédée d'une barre oblique inversée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X