2012-09-06 48 views
-2

我有一個字符串:目標C:解析成字符串特殊情況下數組

[{ 「ID」:1, 「gameName」: 「亞利桑那」, 「成本」: 「0.5E1」 , 「電子郵件」: 「[email protected]」, 「請求」:0},{ 「ID」:2, 「gameName」: 「亞利桑那」, 「成本」: 「0.5E1」, 「電子郵件」:「喜@ gmail.com 「 」請求「:0},{ 」ID「:3, 」gameName「: 」亞利桑那「, 」成本「: 」0.5E1「, 」電子郵件「: 」[email protected]「,」請求「:0}]

然而,我想此字符串解析成一個陣列,例如:

{{「id」:1,「gameName」:「arizona」,「cost」:「0.5E1」,「email」:「[email protected]」,「requests」:0}, {「id」 :2,「gameName」:「arizona」,「cost」:「0.5E1」,「email」:「[email protected]」,「requests」:0}, {「id」:3,「gameName」 : 「亞利桑那」, 「成本」: 「0.5E1」, 「電子郵件」: 「[email protected]」, 「請求」:0}]

這個陣列由逗號在捲曲之間界定括號:},{

我tride usign命令

NSArray *responseArray = [response componentsSeparatedByString:@","]; 

但這串分離成值在EVER Y逗號,這是不可取的。

然後我試圖使用正則表達式:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\{.*\\}" options:NSRegularExpressionCaseInsensitive error:&error]; 
NSArray *matches = [regex matchesInString:response options:0 range:NSMakeRange(0, [response length])]; 

它找到了一個匹配:從第一個大括號的最後一個大括號。 我想知道如果有人有新的如何有效地解決這個問題?

回答

3

此字符串似乎是有效的JSON。嘗試使用JSON解析器:NSJSONSerialization

+0

+1 - 更好的解決方案。 –

+0

@ acheong87謝謝:) – 2012-09-06 05:37:33

0

我同意H2CO3的建議,儘可能使用解析器。

但看你的嘗試正則表達式,它看起來像你只需要使它非貪婪,即

@"\\{.*?\\}" 
    ^
     | 
     Add this question mark for non-greedy matching. 

當然,如果你有更深層次的(我認爲是這將失敗)嵌套數組。使用JSON解析器!

+0

我結束了使用JSON解析器的方法,但是,它是很好的知道如何使正則表達式非貪婪。將在未來派上用場。謝謝。 – JBP