- (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]. Absolute NSCharacterSet, 나는 문서가 명확하게 설명한다고 생각한다 :
NSCharacterSet 객체는 유니 코드 호환 문자 세트를 나타낸다. NSString 및 NSScanner 객체는 NSCharacterSet 객체를 사용하여 문자를 그룹화하여 검색 작업을 수행하므로 검색 중에 특정 문자 집합을 찾을 수 있습니다. 클러스터의 두 공용 클래스 인 NSCharacterSet 및 NSMutableCharacterSet은 각각 정적 및 동적 문자 집합에 대한 프로그래밍 방식 인터페이스를 선언합니다.
NSRange는 [rangeOfCharacterFromSet STR : characterSet]의 결과이며, 그것은, range.location가 characterSet에 포함 STR의 첫번째 인덱스 구조체이다, 그것은 NSInteger 타입은 STR이를 종료하지 않는 경우이며 characterSet의 내용은 매우 큰 정수가 될 것이고 NSNotFound를 의미합니다. range.length는 단어로 의미합니다. 여기서 range.location이 NSNotFound가 아니라면 항상 1입니다.
희망이 있습니다.