Escape% в объективе-c - PullRequest
       1

Escape% в объективе-c

1 голос
/ 26 апреля 2011

Я знаю метод %%, но он не работает: (.

с NSLog

 NSLog(@"%%5B hello %%5D");

печать

% 5B привет% 5D

но с NSString

NSString *str = [NSString stringWithFormat:@"%%5B %@ %%5D",@"hello"];
NSLog(str);

печать

5 привет 68233204

Почему?

Ответы [ 2 ]

2 голосов
/ 26 апреля 2011

Это потому, что вы пропустили строку кода. В вашей stringWithFormat: версии вы, вероятно, имеете что-то вроде

NSString *str = [NSString stringWithFormat:@"%%5B5%%5D"];
NSLog(str);

Проблема в том, что вы теперь интерпретируете символы строки с двойной интерпретацией. Помните, что первый аргумент NSLog() и +[NSString stringWithFormat:] - это строка формата, где символы % обрабатываются специально. В обоих случаях вы можете легко сохранить исходную версию строки (и убрать дубликат% с опережением времени), используя фактические строки формата, как в

NSLog(@"%@", @"%5B%5D");
1 голос
/ 26 апреля 2011

Вам нужно использовать stringWithFormat:, если вы не собираетесь передавать какие-либо аргументы, вы можете просто использовать

NSString *str = @"%%5B%%5D";

Но что касается "почему", то, что вы испытываете, происходит, я не уверен ... Попробуйте передать аргумент и посмотрите, происходит ли это по-прежнему. Может быть, есть ошибка, когда аргументы не передаются?

Согласно этой записи вы правильно ее избегаете.

Спецификаторы формата строки document говорит, что вы тоже все делаете правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...