web-dev-qa-db-ja.com

Objective-CでNSString内の文字のインデックスをオフセット付きで取得し、サブストリングを使用する

紐があります!

   NSString *myString=[NSString stringWithFormat:@"This is my lovely string"];

私がしたいのは:

  1. 文字列の最初の文字がインデックス0であると想定します。11番目の文字(上記の場合は「l」)に移動し、最初に出現するスペースの位置を後方に検索します(上記の文字列では、最初に出現するスペースの位置「l」から後方に移動すると、位置10になります。このスペースのインデックスを「leSpace」と呼びましょう。値は10です。
  2. ...を使用して、残りの文字列を新しい文字列に部分文字列化します。

    [myString substringFromIndex:leSpace]
    

...うまく説明できたと思います。助けてください、私がこの仕事をするのを助けるためにスニペットか何かを書くことができますか?

21
- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)aRange

オプションを使用する場合:NSBackwardsSearch

NSRange range = [myString rangeOfString:@" " options:NSBackwardsSearch range:NSMakeRange(0, 11)];

例:

NSString *myString=[NSString stringWithFormat:@"This is my lovely string"];
NSRange range = [myString rangeOfString:@" " options:NSBackwardsSearch range:NSMakeRange(0, 11)];
NSLog(@"range.location: %lu", range.location);
NSString *substring = [myString substringFromIndex:range.location+1];
NSLog(@"substring: '%@'", substring);

NSLog出力:

range.location: 10
substring: 'lovely string'

もちろん、エラーチェックがあるはずですrange.locationNSNotFoundと等しくない

51
zaph