자바에서는 특정 문자가 예를 들어 Unicode.blockOf (Character)를 사용하는 일본어 간지인지 확인할 수있었습니다. QChar에 대해 동일한 작업을 수행하려고하지만 관련 기능을 찾을 수 없습니다. 내가 방금 그것을 놓친 지 궁금 해서요 아니면 내 자신을 굴려야합니까? 그렇다면 어떻게해야합니까?Qt QChar와 같은 문자의 유니 코드 블록을 어떻게 결정합니까?
2
A
답변
2
이 모든 것을 제공하지 않습니다 howver 당신이 문자가 특정 범위에 있는지 여부를 확인하기 위해,이 같은 기능을 쓸 수 필요 QChar::Category있다
inRange(c, 0x3040, 0x309F); // Hiragana?
물론 당신은 더 나아가 좀 더 추상적하고 범위 enemurate 수 :
inRange(c, Range::Hiragana);
을
그리고 here은 유니 코드 블록의 목록입니다
0
더 나은 Qt 특정 접근법이 있는지 나는 모른다. 없으면 자신의 솔루션을 롤링하는 대신 ICU을 사용해보십시오.
ICU에는 "C/C++"버전과 Java 버전이 있습니다. ICU의 Java 버전은 실제로 i18n/l10n 용 Java 표준 라이브러리와 공통 조상을 공유하므로 C/C++ 버전은 쉽게 이해할 수 있습니다.
bool inRange(QChar c, ushort b, ushort e) {
return (c.unicode() >= b) && (c.unicode() <= e);
}
당신은 다음과 같이 사용할 수 있습니다 :
+0
내 라이브러리에 추가 라이브러리 의존성을 추가하는 것에 대해 여러 가지 감정이 너무 간단합니다. 내가보기에, 내 캐릭터의 일종의 문자 코드를 검색하고 유니 코드 표준에 정의 된 코드 범위와 비교하여 테스트하는 것이 쉬워야한다. 틀렸어? – neuviemeporte
"return c.unicode()> = b && c.unicode() <= e;"가 아닌 이유는 무엇입니까? 상수 복잡성 대 선형 ... –
그래, 그게 실제로 더 좋을거야 :) 편집. – Palmik