2011-01-13 18 views
0

我有以下字符串:如何使用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?

回答

2

從中排除NSMutableString,稱爲string。即NSMutableString *string = [NSMutableString stringWithString:myString];

然後做string = [string substringToIndex:[string length]-1];然後string = [string substringFromIndex:9];或其他一些。

或者,再次使用NSString實例創建NSMutableString實例,並調用[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出於此。

+0

即使使用NSMutableString,也不會改變原始字符串。 – Chuck 2011-01-13 23:28:35

+0

@Chuck:是的。原始字符串當然不變。也沒有必要改變任何東西。我們在這裏也不需要`NSMutableString`s,所以我的帖子太過分了。然而,Alam似乎覺得你可以修改一個你不能的`NSString`。 – SK9 2011-01-13 23:42:51

1

你不能修改NSString(只有一個NSMutableString),但你可以使用[string substringWithRange:NSMakeRange(9, [string length] - 10)]。要實際改變一個NSMutableString,你必須使用兩個調用來修剪你不需要的部分。

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);