0

次の形式の入力文字列があります

"Jerry Lane"(山かっこ)jerry.lane@gmail.com(かっこは閉じた),"Harry Potter"(山かっこ)harry.potter@gmail.com(かっこは閉じた),"Indiana Jones",(山かっこ)indiana .jones@gmail.com(括弧は閉じた),"Tom Cruise"(山括弧は閉じた)tom.cruise@gmail.com(括弧は閉じた)

ここでは、最初にコンマ区切り文字に基づいて文字列を分離することになっています。これにより、次のような別の文字列が得られます

"Jerry Lane"(山かっこ)jerry.lane@gmail.com(かっこ閉じ)

次に、<> ブラケット間の文字列を抽出して保存する必要があります。これは、本質的に文字列 "jerry.lane@gmail.com" です。次のコードを使用していますが、次のエラーが表示されます。

キャッチされていない例外 'NSRangeException' が原因でアプリを終了しています。理由: '-[__NSCFConstantString substringWithRange:]: 範囲またはインデックスが範囲外です'

-(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 に答える