2013-06-26 196 views
0

我想解析下面的字符串,以便將每行放入數組中。ios:將字符串解析爲數組

我有以下字符串作爲的NSString:

(
"2 ripe avocados", 
"1/2 small onion, minced", 
"1 clove garlic, minced", 
"1 small jalape\U00f1o, stems and seeds removed, minced", 
"2 tablespoons cilantro leaves, finely chopped", 
"1 tablespoon of fresh lime juice", 
"1/2 teaspoon coarse salt", 
"A dash of freshly grated black pepper", 
"1 Roma tomato, chopped", 
"4 slices crusty white bread", 
"4 slices Cheddar cheese", 
"Butter, for buttering bread" 
) 

我試過如下:

NSCharacterSet* charset = [NSCharacterSet characterSetWithCharactersInString:@"()"]; 
    NSString *newStr = _recipe.ingredients; 
    newStr = [newStr stringByTrimmingCharactersInSet:charset]; 
    NSArray* array = [newStr componentsSeparatedByString:@"\","]; 
    NSCharacterSet* charset2 = [NSCharacterSet characterSetWithCharactersInString:@"\""]; 
    NSString *ingredientString = [[array objectAtIndex:0] stringByTrimmingCharactersInSet:charset2]; 

    NSLog(@"%@", ingredientString); 

但我得到一個LLDB錯誤:

-[__NSCFArray stringByTrimmingCharactersInSet:]: unrecognized selector sent to instance 0x200a8d90 

我需要保留配料串?

+1

你可以稍微改變輸入字符串,使其適當json和使用json解析器? – Kevin

+0

你可以登錄你的'數組'嗎? – ggrana

+0

@ggrana無法記錄數組,因爲newStr = [newStr stringByTrimmingCharactersInSet:charset];導致lldb內存錯誤 – wwjdm

回答

0

感謝@ggrana,我想出了它。該對象不是String類型,而是NSArray類型。我不需要再解析。我檢查了這與

if ([idont isKindOfClass:[NSArray class]]){ 
NSLog(@"*****************YEA %@", idont); 
} 
1

如果你有這樣的一個NSString的正是字符串你可以用這個3線將其解析到一個數組:

NSCharacterSet* charset = [NSCharacterSet characterSetWithCharactersInString:@"()"]; 
    str = [str stringByTrimmingCharactersInSet:charset]; 
    array = [str componentsSeparatedByString:@","]; 

我們創建了()字符的characterser,我們在使用的第一行第二行修剪字符串並將其從字符串的開頭和結尾刪除。

最後一行將創建一個數組使用, separing你的組件,你將有一個數組,在第一位置將包含字符串"2 ripe avocados"

如果它不工作,你希望你可以嘗試一些方式像:

NSCharacterSet* charset = [NSCharacterSet characterSetWithCharactersInString:@"()"]; 
    str = [str stringByTrimmingCharactersInSet:charset]; 
    NSArray* array = [str componentsSeparatedByString:@"\","]; 
    NSCharacterSet* charset2 = [NSCharacterSet characterSetWithCharactersInString:@"\""]; 
    [[array objectAtIndex:0] stringByTrimmingCharactersInSet:charset2]; 

但基地來解決你已經有的問題。 :)

希望這對你有所幫助。

+0

好的,我嘗試了第一個,我得到了str = [str stringByTrimmingCharactersInSet:charset]的lldb內存問題。不知道爲什麼。我也將刪除所有的空格。每個單詞之間有5個空格。 – wwjdm

+0

如果您可以發佈更多的代碼,我可以更直接地幫助您,但我認爲它不會從我發佈的內容中改變很多,可能只是一些調整以符合您的情況。 – ggrana

+0

發佈了更多代碼 – wwjdm

0

嘗試NSString-componentsSeparatedByString:。見here。它看起來像要用「,」分隔,請確保您已刪除或轉義了您的語音標記,並且每個逗號後都沒有任何空白字符。

事實上,請注意,您在某些組件中使用了逗號。考慮修改字符串以使用其他分隔字符,例如分號。否則結果將不會是你想要的(例如「1瓣大蒜,切碎」分成兩部分,而不是一部分)。