0

我有一个格式的输入字符串

"Jerry Lane"(尖括号)jerry.lane@gmail.com(括号闭合),"哈利波特"(尖括号)harry.potter@gmail.com(括号闭合),"Indiana Jones",(尖括号)indiana .jones@gmail.com(括号关闭),“汤姆克鲁斯”(尖括号)tom.cruise@gmail.com(括号关闭)

在这里,我应该首先根据逗号分隔符分隔字符串,这会给我一个单独的字符串,例如

“杰里巷”(尖括号)jerry.lane@gmail.com(括号关闭)

然后我需要保存提取 <> 括号之间的字符串,它本质上是字符串“jerry.lane@gmail.com”。我正在使用以下代码,但它给了我以下错误:

由于未捕获的异常“NSRangeException”而终止应用程序,原因:“-[__NSCFConstantString substringWithRange:]: Range or index out of bounds”

-(NSArray *)parseString:(NSString *)string
{
  if(string)
  {
    NSArray *myArray = [string componentsSeparatedByString:@","];
    for(NSMutableString *myString in myArray)
    {
        NSRange start,end;
        start = [myString rangeOfString:@"<"];
        end = [myString rangeOfString:@">"];
        if(start.location != NSNotFound && end.location != NSNotFound)
        {
            NSString *emailAddress = [myString substringWithRange:NSMakeRange(start.location,end.location)];
            NSString *name = [myString substringToIndex:start.location];

            NSDictionary *myDictionary = [[NSDictionary alloc] init];
            [myDictionary setValue:emailAddress forKey:@"Dhruvil Vyas"];
            [testArray addObject:myDictionary];

        }
    }
}

return testArray;

}

4

2 回答 2

4

substring 采用的参数是起始位置和长度

不是开始位置和结束位置。

更多信息

于 2013-01-18T05:40:40.797 回答
1

borrrden 的回答是正确的。这是另一种方法。

-(NSArray *)parseString:(NSString *)string
{
  if(string)
  {
    NSArray *myArray = [string componentsSeparatedByString:@","];
    for(NSMutableString *myString in myArray)
    {
        NSArray *tempNameArray = [myString componentsSeparatedByString:@"<"];
        NSString *email = [tempNameArray objectAtIndex:1];

        NSArray *tempMailArray = [email componentsSeparatedByString:@">"];

        NSString *emailAddress = [tempMailArray objectAtIndex:0];
        NSString *name = [tempNameArray objectAtIndex:0];

        NSDictionary *myDictionary = [[NSDictionary alloc] init];
        [myDictionary setValue:emailAddress forKey:@"Dhruvil Vyas"];
        [testArray addObject:myDictionary];
    }
  }

 return testArray;
}
于 2013-01-18T05:50:50.463 回答