88 votes

Comment mettre un "-" dans le fichier string.xml ?

J'ai besoin de pouvoir mettre un "-" dans la chaîne de caractères à l'intérieur de mon strings.xml fichier.

Mon problème est que lorsque je mets ma chaîne qui est "1261eba2-9d8c-11e1-93e3-40409e0f44a1" Eclipse hurle :

Annotations multiples trouvées à cette ligne : - Remplacer "-" par un caractère "en dash" (-, &;#8211 ;)

Comment puis-je réparer cela ?

1 votes

Où avez-vous besoin de cette valeur exactement ? S'agit-il d'une balise, d'une valeur de balise ou d'une valeur d'attribut ?

2 votes

remplacer "-" par "\-"

123voto

Phil Points 822

Donc, quand vous lisez le message d'erreur, votre réponse sera que vous devez remplacer - avec – . Ensuite, cela devrait fonctionner correctement =)

http://en.wikipedia.org/wiki/Dash

4 votes

Cela convient lorsque vous souhaitez simplement afficher la chaîne de caractères à l'utilisateur. L'utilisateur ne peut pas vraiment dire que vous "trichez" avec un caractère unicode d'apparence similaire. Si vous souhaitez simplement utiliser le tiret normal, consultez cette réponse : stackoverflow.com/a/10895509/78234

2 votes

Je pense que ce code est pour un endash, pas un trait d'union ordinaire.

0 votes

Ya c'est un en-dash pas un trait d'union. thepunctuationguide.com/fr-dash.html

88voto

Tal Weiss Points 2763

Les autres réponses sont correctes lorsque vous souhaitez afficher la chaîne de caractères à l'utilisateur. L'utilisateur ne peut pas vraiment faire la différence entre un "vrai" tiret et l'astuce de l'unicode.
Mais, si vous devez vraiment avoir le tiret (par exemple parce que cette chaîne est utilisée comme mot de passe quelque part, ou comme clé url pour une API), vous pouvez simplement utiliser ce format :

<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="TypographyDashes">
    <string name="EVA_API_KEY">3c42b725-5e20-41c8-982f-dee40be8a05b</string>
</resources>

L'avertissement sera supprimé et la chaîne pourra être lue à l'aide de la commande régulière :

getResources().getString(R.string.EVA_API_KEY);

3 votes

c'est la meilleure réponse. Merci.

10 votes

Une astuce : vous pouvez mettre la partie tools:ignore="TypographyDashes" uniquement dans les balises <string> qui ont vraiment besoin du vrai tiret.

1 votes

Pour une raison quelconque, cela n'a fonctionné pour moi que lorsque j'ai mis l'ignore sur la chaîne que j'utilise. Merci pour la réponse. J'ai découvert que c'était le mauvais tiret, mais la façon de le faire fonctionner n'était pas aussi simple.

14voto

Utilisez coupure arrière ( \ ) devant chaque caractère spécial. comme moi et Android.

C'est ce qu'on appelle un caractère d'échappement. ( \ )

0 votes

Je pense que tu veux dire ajouter le caractère d'échappement : "\" avant chaque caractère spécial.

0 votes

fr.wikipedia.org/wiki/Escape_character le caractère d'échappement est la barre oblique inverse - "\" et non la barre oblique directe - "/".

0 votes

Vérifiez ma réponse maintenant. C'est une barre oblique ().

4voto

Ganesh Katikar Points 156

Pour le trait d'union, utilisez (-) (-)...

<string name="abc">Welcome &#45; Bro...</string>

et pour plus de symboles, utilisez le lien ci-dessous

http://www.degraeve.com/reference/specialcharacters.php

Profitez-en...

1voto

Maz Points 216

Vous avez probablement ceci :

<string name="test1">1261eba2-9d8c-11e1-93e3-40409e0f44a1</string>

Mais vous avez besoin de l'un ou l'autre :

<string name="test2">1261eba2&#8211;9d8c&#8211;11e1&#8211;93e3&#8211;40409e0f44a1</string>
<string name="test3">1261eba2–9d8c–11e1–93e3–40409e0f44a1</string>

Dans le second, le - est remplacé par un -. Il est difficile de faire la différence visuellement.

1 votes

Attention toutefois : si vous modifiez ces symboles dans une URL, celle-ci peut cesser de fonctionner (ce fut le cas pour moi).

0 votes

Je veux remplacer un symbole de tiret court (n-dash) par une séquence échappée. Mais &#8211; On dirait que c'est la séquence d'échappement pour le symbole du tiret long (m-dash).

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