- (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,当你调用一个方法时,谁调用谁是reciever:[receiver callTheMethod]。关于NSCharacterSet,我觉得文档解释的很清楚:
NSCharacterSet 对象表示一组符合 Unicode 的字符。NSString 和 NSScanner 对象使用 NSCharacterSet 对象将字符组合在一起以进行搜索操作,以便它们可以在搜索过程中找到任何特定字符集。集群的两个公共类 NSCharacterSet 和 NSMutableCharacterSet 分别声明了静态和动态字符集的编程接口。
NSRange 是 [str rangeOfCharacterFromSet:characterSet] 的结果,它是一个结构体,range.location 是 str 中包含在 characterSet 中的第一个索引,它是一个 NSInteger 类型,当 str 没有退出一个 characterSet 的内容时它会是一个非常大的整数,它意味着 NSNotFound。range.length 的意思是,在这里,除非 range.location 是 NSNotFound,否则它始终为 1。
希望能帮助到你。