문자열 반전 함수와 초대형 문자 집합
public AbstractStringBuilder reverse() {
boolean hasSurrogate = false;
int n = count - 1;
//
for (int j = (n-1) >> 1;j >= 0; --j) {
char temp = value[j];
char temp2 = value[n - j];
if (!hasSurrogate) {
hasSurrogate = (temp >= Character.MIN_SURROGATE && temp <= Character.MAX_SURROGATE)
|| (temp2 >= Character.MIN_SURROGATE && temp2 <= Character.MAX_SURROGATE);
}
value[j] = temp2;
value[n - j] = temp;
}
if (hasSurrogate) {
// Reverse back all valid surrogate pairs
for (int i = 0; i < count - 1; i++) {
char c2 = value[i];
if (Character.isLowSurrogate(c2)) {
char c1 = value[i + 1];
if (Character.isHighSurrogate(c1)) {
value[i++] = c1;
value[i] = c2;
}
}
}
}
return this;
}
소스를 봤을 때 has Surrogate라는 게 잘 모르겠어요.
자료를 찾아보니 탁 트였다
EasyJF 공식 사이트가 전면적으로 업그레이드되고 EasyJF 개원팀도 전면적으로 개편될 것입니다. 귀중한 의견과 건의를 해 주시기를 기대합니다!
현재 위치: 홈페이지-MyRss-Java 고급 응용 프로그램
JDK 1.5 하이퍼텍스트 세트 지원
저자: 본 사이트 회원 출처: 발표 시간: 2009-04-07 20:46:12
JDK 1.5 하이퍼텍스트 세트 지원
유니코드 및 하이퍼텍스트 세트
국표 GB18030은 4바이트 확장 부분을 규정했는데 이 부분은 현재 유니코드 규범에서 CJK Ext B 구역으로 존재한다. 즉, 흔히 말하는 중국어 초대형 문자 집합이다.이 섹션은\U20000 -\U2A6D6로 인코딩됩니다.
UTF-16 및 Java String/Character 객체
완전한 유니코드 문자는 코드점/CodePoint라고 하고, Javachar는 코드단원codeunit라고 합니다.
String 대상은 UTF-16로 유니코드 문자를 저장하는데 두 문자로 초대형 문자 집합의 한자를 표시해야 한다. 이런 표현 방식을 Surrogate라고 하는데 첫 번째 문자는 Surrogate High이고 두 번째는 Surrogate Low라고 한다.
char가 Surrogate 영역의 문자인지 판단하려면 Character의 isHighSurrogate()/isLowSurrogate() 방법을 사용합니다.
두 개의 Surrogate High/Low 문자에서 전체 Unicode CodePoint용 Character를 반환합니다.toCodePoint()/codePointAt() 메서드입니다.
코드 포인트가 하나 필요할 수도 있고 두 개의 char 표시가 필요할 수도 있기 때문에 CharSequence를 직접 사용할 수 없습니다.length () 방법은 문자열이 도대체 몇 개의 한자가 있는지 직접 되돌려주고 String을 사용해야 합니다.codePointCount()/Character.codePointCount().
문자열의 N 번째 문자를 찾으려면 N을 오프셋으로 사용할 수 없고, 문자열 머리에서 순서대로 옮겨야 하며, String/Character를 사용해야 합니다.offsetByCodePoints() 메서드.
문자열의 현재 문자열에서 이전 문자를 찾을 수도 없고 offset --로 실행할 수도 없고 String을 사용해야 합니다.codePointBefore()/Character.codePointBefore() 또는 String/Character를 사용합니다.offsetByCodePoints()
현재 문자에서 다음 문자를 찾으려면 offset++로 직접 실행할 수 없습니다. 현재 CodePoint의 길이를 판단한 후 계산하거나 String/Character로 계산해야 합니다.offsetByCodePoints() .
Swing 하이퍼텍스트 세트 지원
JtextPane은 글꼴을 올바르게 설정하면 초대형 문자 집합을 표시하고 편집할 수 있는 초대형 문자 집합에 대한 지원을 추가했습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
2022년 3월 21일 TIL1. JVM & JDK JVM JRE 자바 실행 환경의 약자로 자바 프로그램을 실행하기 위한 도구들이 들어있으며 JVM이 이 안에 포함된다 JDK JRE + 개발툴 javac는 컴파일 명령어 HelloWorld.cl...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.