Guillemets non reconnus
Herve
Membre
Bonjour
Je sais que la question a été maintes fois posée, mais les solutions lues un peu partout ne fonctionnent pas!!
Je cherche à détecter des guillemets dans un NSString pour les supprimer.
J'ai essayé tous les caractères unichar de cette façon :
//verif caractères
if ([aString containsString:@"\u201C"])NSLog(@"u201C");
if ([aString containsString:@"\u201D"])NSLog(@"u201D");
if ([aString containsString:@"\""])NSLog(@"contient guillemets");
if ([aString containsString:@"\u02BA"])NSLog(@"u02BA");
if ([aString containsString:@"\u2033"])NSLog(@"u2033");
if ([aString containsString:@"\u3003"])NSLog(@"u3003");
if ([aString containsString:@"\u05F4"])NSLog(@"u05F4");
if ([aString containsString:@"\u030B"])NSLog(@"u030B");
if ([aString containsString:@"\u030E"])NSLog(@"u030E");
if ([aString containsString:@"\u2018"])NSLog(@"guillemet 2018");
if ([aString containsString:@"\u2019"])NSLog(@"u2019 apostrophe"); //OUI
//seule l'apostrophe fonctionne!
Déjà pour l'apostrophe, j'ai dû utiliser @\u2019 et non @\', mais aucune norme ne fonctionne pour le guillemet. Le @\u0022, qui serait le caractère universel, est rejeté par le compilateur (en rouge!!)
Z'auriez pas une idée s'vous plait????? Merci.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
~~Il compile ton code ?
Tu devrais utiliser
@"\""
.En fait, il semble manquer à chaque fois des guillemets pour tes strings. C'est
@"monString"
, avec@
+"
+ string à utiliser +"
.~~Édit:
Rien dit, mais utilise la balise code, car du coup, j'ai cru que ce n'était pas ça.
Es-tu sûr que ton NSString contient des guillemets? Pourrais-tu nous donner sa valeur ? Pourrais-tu également le printer, copier/coller le guillemet et regarde s'il s'agit bien du même et pas par exemple
”
ou“
et pas"
...Je l'ai corrigé
Et, Hervé, pour les balises de code -
```
… du code
```
Normalenet
@"'"
aurait suffit, pas besoin de l'échapper.Tu n'aurais pas deux simple quote (on va dire « apostrophe ») à la suite plutôt que des double quotes?
Merci pour vos posts
Merci Larme en particulier, mais j'ai bien essayé auparavant ceci :
"'"
"\'"
Normalement, d'après ce que j'ai pu lire ailleurs, cela aurait dû marcher. Si je fais NSLog(@ " ' ' ' "); j'ai bien trois apostrophes en console par exemple. Idem pour "\"" pour les guillemets. Mais pour les fonctions de type "containsString" ou "componentsSeparatedByString:" , cela ne veut pas fonctionner. Pourquoi donc???
Le message d'erreur de XCode (que je croyais compiler mon code vu ce que je me souvenais avoir lu dans des livres...) est :
"Character '"' cannot be specified by a universal character name"
lorsque je rentre @\u0022. C'est dommage car d'après la doc, ce serait le caractère le plus universel (voir ici) :
https://www.unicode.org/charts/PDF/U0000.pdf
Merci en tous les cas pour vos éléments de réponse. Cherchons encore!! Tout ceci est somme toutes très étonnant.
Nouvel essai avec une idée lue sur StackOverflow :
Le "test" s'imprime bien, j'ai bien un guillemet en console, mais le caractère n'est pas reconnu : "ya 0022" ne s'affiche pas.
Question :
Que contient
aString
?est tout simplement une autre NSString : la phrase d'un texte. Ce code intervient lorsque je découpe en mots les phrases d'un texte.
(les codes que je montre sur cette page sont des codes de test console)
Je viens de faire le test suivant :
Je crée une NSString avec des guillemets,
NSString *aString = @"Test de \" recherche\" de guillemets et d'apostrophes";
et cette fois,
if ([aString containsString:@"\""])
fonctionne, ainsi que
(Pas les autres)
La NSString du logiciel quant à elle vient d'une NSAttributedString.
monAttributedString.string
Pensez-vous que le problème puisse venir de là??
Non.
J'aurais plutôt tendance à dire que ce ne sont pas les mêmes guillemets.
Du style
"
vs”
vs“
, comme je l'ai signalé précédemment. Voire même''
(deux quotes).Pourrais-tu trouver le range des guillemets qui posent problème, faire un
substringWithRange:
dessus et les comparer avec@"\""
par exemple ?Merci Larme pour ton post. Ce que tu proposes ressemble à ce que j'ai fait avec toutes les configurations possible de guillemets comme montré plus haut. A vrai dire, d'autres caractères comme les parenthèses posent problème aussi.
Je vais reprendre cela demain, je vais relire la doc.
Merci encore.
J'ai fini par résoudre ainsi le problème :
NSCharacterSet *ponctuations = [NSCharacterSet characterSetWithCharactersInString:[NSString stringWithFormat:@"%C%C%C%C%C", 0x0022,0x00AB,0x00BB,0x201C,0x201D]]; NSArray* phrases = [texte componentsSeparatedByCharactersInSet:ponctuations];
Je suis incapable de vous dire lequel de ces différents guillemets est reconnu par NSString (et il y en a d'autres!! voir le lien...)
http://www.fileformat.info/info/unicode/char/search.htm?q="&preview=entity
Comment marquer [Résolu] dans le titre déjà??