NSString манипуляции - PullRequest
       5

NSString манипуляции

0 голосов
/ 22 сентября 2010

У меня есть строка NSSt, которую мне нужно «очистить» перед загрузкой в ​​мой файл json, однако я не могу найти способ сделать это.

Это моя строка NSString:

"DUMMY({parameters:{code:"60246", language:"en", country:"en"}, result:{"...JSON...});"

В основном мне нужно удалить все, кроме: {"... JSON ...}

Проблема в том, что коды и т. Д. Меняются?

Ответы [ 2 ]

4 голосов
/ 22 сентября 2010

Если строка, по крайней мере, последовательно построена в указанном вами формате, вы можете использовать this :

NSUInteger rangeStart = [string rangeOfString:@"result:"].location;
NSUInteger lastBrace = [string rangeOfString:@"}" options:NSBackwardsSearch].location;
NSUInteger jsonStart = rangeStart + [@"result:" length];
NSUInteger jsonLength = lastBrace - jsonStart + 1;
NSRange jsonRange = NSMakeRange(jsonStart, jsonLength);
NSString *justJson = [string substringWithRange:jsonRange];

Вот немного более краткий, но, возможно, менее эффективный, method :

NSUInteger rangeStart = [string rangeOfString:@"result:"].location;
NSString *justJson = [string substringFromIndex:rangeStart + [@"range:" length]];
NSUInteger lastBrace = [justJson rangeOfString:@"}" options:NSBackwardsSearch].location;
justJson = [justJson substringToIndex:lastBrace+1];
1 голос
/ 22 сентября 2010

Почему бы вам не преобразовать в NSDictionary, а затем извлечь только элемент с ключом "result"?Например, вы можете использовать JSONFramework и сделать что-то вроде этого:

NSDictionary* dic = [yourJsonEncodedStrin JSONValue];
id result = [dic objectForKey:@"result"];

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

NSString* resultString = [result JSONRepresentation];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...