- (void)test {
NSString *str = @"input content";
NSCharacterSet *characterSet = [NSCharacterSet decimalDigitCharacterSet];
NSRange range = [str rangeOfCharacterFromSet:characterSet];
NSLog(@"location:%ld, length:%ld", range.location, range.length);
// range.location is 9223372036854775807, in fact it is a NSNotFound which means not exists, range.length is 0
str = @"input 1";
range = [str rangeOfCharacterFromSet:characterSet];
NSLog(@"location:%ld, length:%ld", range.location, range.length);
// range.location is 6, range.length is 1
str = @"input 123";
range = [str rangeOfCharacterFromSet:characterSet];
NSLog(@"location:%ld, length:%ld", range.location, range.length);
// range.location is 6, range.length is 1
str = @"123 input 123";
range = [str rangeOfCharacterFromSet:characterSet];
NSLog(@"location:%ld, length:%ld", range.location, range.length);
// range.location is 0, range.length is 1
}
テストでは、str はレシーバーであり、メソッドを呼び出すとき、誰がレシーバーであるかを呼び出します: [receiver callTheMethod]。NSCharacterSetについては、ドキュメントが明確に説明していると思います:
NSCharacterSet オブジェクトは、Unicode 準拠の文字のセットを表します。NSString および NSScanner オブジェクトは NSCharacterSet オブジェクトを使用して、検索操作のために文字をグループ化します。これにより、検索中に特定の文字セットを見つけることができます。クラスタの 2 つのパブリック クラスである NSCharacterSet と NSMutableCharacterSet は、それぞれ静的および動的文字セットのプログラム インターフェイスを宣言します。
NSRange は [str rangeOfCharacterFromSet:characterSet] の結果であり、構造体です。range.location は、characterSet に含まれる str の最初のインデックスです。これは NSInteger タイプです。str が文字セットの内容を終了しない場合は、非常に大きな整数であり、NSNotFound を意味します。range.length は言葉の通り、ここでは range.location が NSNotFound でない限り常に 1 であることを意味します。
それが役に立てば幸い。