-1

私は iphone 開発の初心者であり、常に変化する NSString 値から部分文字列を作成しようとしています。基本的に、変化する文字列の最後のセクションをサブストリング化しようとしています。文字列のフォーマットは「3 月 15 日午後のメタル解説: ジョン ジョーンズ」です。文字列の姓の部分が必要です。たとえば、「ジョン ジョーンズ」ではなく「ジョーンズ」です。私が試みた2つのアプローチは、例外を与えるか、値を返しません。どんな助けでも大歓迎です。

マイコード

//This approach throw index out of bounds exception
NSString * storyLink2 = [[stories objectAtIndex: storyIndex] objectForKey: @"title"];
NSRange namestart = [storyLink2 rangeOfString:@" " options:NSBackwardsSearch];
NSString *name = [[[stories objectAtIndex: storyIndex] objectForKey: @"title"] substringWithRange:NSMakeRange(namestart.location +1, name.length - namestart.location+1)];

//This approach return nothing
NSString *name = [[stories objectAtIndex: storyIndex] objectForKey: @"title"];
NSArray *thingitems = [name componentsSeparatedByString:@" "];
name = [thingitems lastObject];

編集

  NSString *name = [[stories objectAtIndex: storyIndex] objectForKey: @"title"];
NSLog(@"myname: %@", name);// <-- Showing  "March 15 PM Metals Commentary: John Jones"
NSArray *thingitems = [name componentsSeparatedByString:@":"]; ////<-- [__NSArrayM componentsSeparatedByString:]: unrecognized selector sent to instance 0x89741a0
NSArray *lastName=[thingitems componentsSeparatedByString:@" "];
name = [lastName lastObject];
NSLog(@"myname: %@", name);

ログ

2013-03-17 01:30:39.738 GSCC[704:207] myname: March 15 PM Metals Commentary: Thomas Vitiello

2013-03-17 01:30:39.739 GSCC[704:207] -[__NSArrayM componentsSeparatedByString:]: unrecognized selector sent to instance 0x89741a0
2013-03-17 01:30:39.741 GSCC[704:207] Exception - -[__NSArrayM componentsSeparatedByString:]: unrecognized selector sent to instance 0x89741a0
4

3 に答える 3

2

あなたの文字列があり、コロン「:」"March 15 PM Metals Commentary: John Jones"の後の最後の部分に来る名前を常に wnat する場合:

NSString *str=@"March 15 PM Metals Commentary: John Jones";
//use storyLink2 in place of str
NSString *name=[str componentsSeparatedByString:@":"][1];

編集:

姓のみが必要な場合:

NSString *str=@"March 15 PM Metals Commentary: John Jones";
//use storyLink2 in place of str
NSArray *fullname=[str componentsSeparatedByString:@" "];
NSArray *lastName=[fullname lastObject];
于 2013-03-17T05:11:09.387 に答える
0

の最後の単語だけが必要な場合はstring、を試してください[ [ string componentsSeparatedByCharactersInSet:[ NSCharacterSet whitespaceCharacterSet ] ] lastObject ]

于 2013-03-17T05:40:36.630 に答える
0

エラーなしでこれでテストしました

NSString *string = @"March 15 PM Metals Commentary: John Jones";
NSString *lastName = [[string componentsSeparatedByString:@" "] lastObject];
NSLog(@"%@",lastName);

だから私はあなたのがこのようなものかもしれないと思いますか?

NSString *name = [[stories objectAtIndex: storyIndex] objectForKey: @"title"];
NSString *lastName=[[name componentsSeparatedByString:@" "] lastObject];
NSLog(@"myname: %@", lastName);
于 2013-03-17T05:49:47.717 に答える