Добавьте обратную косую черту в строку в Objective-c - PullRequest
2 голосов
/ 22 января 2010

У меня есть проблема, идентичная этой проблеме здесь .

Я даже хочу закодировать ту же информацию, что и у него (это дата / время для asp.net) ...

Когда я пытаюсь добавить обратную косую черту, я получаю две обратной косой черты, так как я использовал \.

Все в ветке выше утверждали, что это проблема с NSLog и что NSString рассматривает \\ как \. Я проверил это далее, используя анализатор пакетов для проверки пакетов, которые я отправляю на веб-сервер, и я могу подтвердить, что он передает двойной обратный слеш вместо одного обратного слеш.

Кто-нибудь знает, как добавить обратную косую черту в строку NSString?

Ответы [ 2 ]

7 голосов
/ 22 января 2010

У меня нормально работают строки и NSLog:

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

Чего мне не хватает?

2 голосов
/ 01 августа 2012

Попробуйте это:

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

У меня была та же проблема, оказалось, что мой JSON Parser заменил все вхождения "\\" на "\\\\", поэтому, когда я NSLogged мой оригинальный код, как это

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

Вот что я получил:

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

Тем не менее, сама строка содержала ЧЕТЫРЕ обратных слеша (но NSLog напечатало только 2 из них).

Вот что мне помогло:

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

Результат:

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

...