如何使用NSString解析此字符串?

时间:2011-01-13 23:21:43

标签: objective-c cocoa string nsstring

我有以下字符串:

callback({"Outcome":"Success", "Message":null, "Identity":"Request", "Delay":0.002, "Symbol":"AAPL", "CompanyName":"Apple Inc.", "Date":"1\/13\/2011", "Time":"4:02:36 PM", "Open":344.6, "Close":345.93, "PreviousClose":344.42, "High":346.63, "Low":343.86, "Last":345.93, "Change":1.51, "PercentChange":0.438, "Volume":785960})

我希望我的最后一个字符串不包含callback(和字符串末尾的最后一个)。我该如何修改这个NSString?

3 个答案:

答案 0 :(得分:3)

NSScanner非常适合这类事情。

NSString *json = nil;
NSScanner *scanner = [NSScanner scannerWithString:fullString];
[scanner scanUpToString:@"{" intoString:NULL]; // Scan to where the JSON begins
[scanner scanUpToString:@")" intoString:&json];

NSLog(@"json = %@", json);

答案 1 :(得分:2)

从中NSMutableString创建string。即NSMutableString *string = [NSMutableString stringWithString:myString];

然后执行string = [string substringToIndex:[string length]-1];,然后执行string = [string substringFromIndex:9];或其他此类操作。

或者,再次使用NSMutableString个实例创建NSString个实例,然后致电[string replaceOccurrencesOfString:@"callback(" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [string length])];[string replaceOccurrencesOfString:@")" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [string length])];。这可能是首选。

无论哪种方式,然后使用新字符串创建NSString实例,如果您需要goodString = [NSString stringWithString:string];,请使用NSString

答案 2 :(得分:1)

您无法修改NSString(仅限NSMutableString),但您可以使用[string substringWithRange:NSMakeRange(9, [string length] - 10)]。要实际改变NSMutableString,您必须使用两个deleteCharactersInRange:调用来修剪您不想要的部分。