NSString
에서 CJK 확장 B 문자와 일치하는 데 문제가 있습니다. Objective-C의 CJK 확장 B와 일치
표의 확장 B 통합 Wikipédia CJK Unified Ideographs Extension B :
CJK
중국어, 일본어, 한국어, 베트남어 레어 역사적인 CJK 표의 문자를 포함하는 유니 블록이다.
문자의 유니 코드 블록은 다음과 같습니다 CJK 확장 B 문자를 일치 [\\ud840-\\ud868][\\udc00-\\udfff]|\\ud869[\\udc00-\\uded6]
: 나는 정규식을 사용하고 U+20000
U+2A6DF
까지. 여기
NSString *searchedString = @""; // First character (U+20000)
NSString *pattern = @"[\\ud840-\\ud868][\\udc00-\\udfff]|\\ud869[\\udc00-\\uded6]";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
if ([regex numberOfMatchesInString:searchedString options:0 range:NSMakeRange(0, [searchedString length])] > 0) {
NSLog(@"matches");
} else {
NSLog(@"doesn't match");
}
출력 : doesn't match
exemple 들어
나는 히라가나 문자를 더 간단하게 뭔가를하려고하면, 그것은 노력하고 있습니다 :
NSString *searchedString = @"ひ";
NSString *pattern = @"[\\u3040-\\u309F]";
출력 : matches
도움을 주시면 감사하겠습니다. 감사.
귀하의 패턴이 올바르지 않은 사용을 참조하십시오. 비 캡처 그룹 구문은'(? : ...)'입니다. 또한 끝에있는 'g'는 문자 그대로 'g'를 의미합니다 - 의도 된 것입니까? –
값이 'UTF-16'이고 'UTF-8'이 아니기 때문에 작동하지 않을 수 있습니까? –
@ WiktorStribiżew 죄송합니다. 실수로 내 메시지의 서식을 지울 때 (? : .. 부분을 지 웁니다. 간단하게하기 위해 질문을 업데이트했습니다. –