2010-01-22 4 views
2

J'ai un problème identique à ce problème here.Ajouter une barre oblique inverse à la chaîne dans Objective-c

Je veux même encoder le même infromation que lui (il est une date/heure pour asp.net) ...

Chaque fois que j'essaie d'ajouter une barre oblique inverse je reçois deux antislashs depuis je \.

Tout le monde dans le fil ci-dessus a affirmé qu'il s'agit d'un problème avec NSLog et que NSString traite \\ comme un . J'ai vérifié plus loin en utilisant un renifleur de paquet pour examiner les paquets que j'envoie au serveur Web et je peux confirmer qu'il transmet une double barre oblique inverse au lieu d'une seule barre oblique inverse.

Est-ce que quelqu'un sait comment ajouter une barre oblique inverse à un NSString?

Répondre

6

Les cordes et NSLog fonctionnent très bien pour moi:

NSLog(@"\\"); // output is one backslash 
NSLog(@"\\\\"); // output is two backslashes 
NSLog(@"\\/Date(100034234)\\/"); // output is \/Date(100034234)\/ 

Qu'est-ce que je manque?

+1

Salut Gerry, Avez-vous essayé? NSLog (@ "\\/Date (1234534534) \\ /"); produit un double backslash pour moi. Plus important encore quand je transmets cette chaîne sur http la double barre oblique inverse apparaît dans le paquet –

+0

Cela fonctionne pour moi (j'ai copié le code exact de votre commentaire). Je cours l'iPhone SDK 3.1.2 et Xcode 3.2.1. – gerry3

+0

Sur ma machine NSLog (@ "\\% @", [NSString stringWithFormat: @ "\\ n \\\\ t"]) renvoie correctement "\\ n \\ t" – Costique

2

Essayez ceci:

yourStr = [yourStr stringByReplacingOccurrencesOfString:@"\\\\" withString:@"\\"]; 
NSLog(@"%@", yourStr); 

J'ai eu le même problème, est avéré que mon JSON Parser remplacé Toutes les occurences de "\\" avec "\\\\", alors quand je NSLogged mon original code comme ceci:

NSString *jsonString = [myJSONStuff JSONRepresentation]; 
NSLog(@"%@", jsonString); 

C'est ce que je suis:

{TimeStamp: "\\/Date (12345678) \\ /"}

Cependant, la chaîne elle-même contenait quatre barres obliques inverses (mais seulement deux d'entre eux sont imprimés par NSLog).

C'est ce qui m'a aidé:

NSString *jsonString = [myJSONStuff JSONRepresentation]; 
jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\\\\" withString:@"\\"]; 
NSLog(@"%@", jsonString); 

Le résultat:

{TimeStamp: "\/Date (12345678) \ /"}

+0

Ce cas m'est également arrivé lors de la conversion de NSDictionary contenant des objets NSString avec des antislashs en NSString. –

Questions connexes