ios:将字符串解析为数组

时间:2013-06-26 00:16:24

标签: ios parsing nsarray

我想解析下面的字符串,以便每行都放入一个数组。

我有以下字符串作为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

我需要保留成分字符串吗?

3 个答案:

答案 0 :(得分:1)

如果你在NSString中有这个完全字符串,你可以将它解析成一个包含这3行的数组:

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

我们创建一个带有()字符的字符的第一行,我们在第二行中使用它来修剪字符串并将其从字符串的开头和结尾删除。

最后一行将创建一个使用,分隔组件的数组,并且您将拥有一个数组,在第一个位置将包含字符串"2 ripe avocados"

如果它没有按照你期望的方式工作,你可以尝试以下方式:

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

但是你已经拥有解决问题的基础。 :)

希望这对你有所帮助。

答案 1 :(得分:0)

试试NSString的{​​{1}}。见here。看起来你想用“,”分开,确保你已经删除或转义了你的语音标记,并且每个逗号后都没有任何杂散的空白字符。

实际上,请注意您在某些组件中有逗号。考虑修改字符串以使用其他分隔字符,例如分号。否则结果将不是你想要的(例如“1丁香大蒜,切碎”分成两部分,而不是一部分。)

答案 2 :(得分:0)

感谢@ggrana,我想通了。该对象不是String类型,它是NSArray类型。我不需要解析了。我用

检查了这个
if ([idont isKindOfClass:[NSArray class]]){
 NSLog(@"*****************YEA %@", idont);
}