1 votes

Échapper aux barres obliques inverses dans l'appel de méthode stringByReplacingOccurrencesOfString Ne fonctionne pas en Objective C

Cette ligne de code ne produit pas le résultat escompté.

NSString *tmpstoryTitle2 = [tmpstoryTitle stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];

J'essaie de modifier une chaîne de caractères comme suit :

hello, "this" est ma chaîne de caractères.

à

Bonjour, \N "this\" est ma chaîne de caractères.

Avec le code ci-dessus. Cependant, la sortie que j'obtiens est la suivante :

Bonjour, \\ "ce \\ "est ma chaîne de caractères.

Si je retire le \\ à partir de la chaîne de recherche \\ "pour remplacer \" J'obtiens la sortie :

hello, "this" est ma chaîne de caractères.

Ce qui est exact, mais je ne parviens pas à ajouter le " devant mon " avec la séquence d'échappement, \\ pour la barre oblique inverse et "\" pour les guillemets doubles.

1voto

Aleksei Potov Points 829

Êtes-vous sûr que la chaîne source ( tmpstoryTitle ) ne contient pas déjà de barre oblique ? Je viens d'essayer

NSString * tmpstoryTitle = [[NSString alloc] initWithString: @"hello, \"this\" is my string."];
NSString * tmpstoryTitle2 = [tmpstoryTitle stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
NSLog(@"%@", tmpstoryTitle);
NSLog(@"%@", tmpstoryTitle2);

Et il produit :

2009-11-02 22:32:40.756 JezzBall[71173:207] hello, "this" is my string.
2009-11-02 22:32:40.767 JezzBall[71173:207] hello, \"this\" is my string.

Ce qui semble correspondre à vos attentes ?

1voto

Ben Gottlieb Points 59900

Comment vérifiez-vous la chaîne ? Si vous l'imprimez sur la console (à l'aide de NSLog()), les barres obliques inverses seront insérées pour vous ; essayez de définir le texte d'un UILabel comme tel, et voyez s'il apparaît de cette manière. Votre code semble correct.

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