한글 검색을 할때 초성만으로 완성된 음절을 사용해야 되는 경우가 있을수 있다.
다음은 예시 화면이다.
다음에 유니코드 표를 참조하면 아래와 같은 코드를 생성 가능하다
public class KoreanDecomposer {
public static void main(String[] args) {
String text = "초성테스트";
for (char ch : text.toCharArray()) {
System.out.println(decompose(ch));
}
}
public static String decompose(char ch) {
// 유니코드 상에서 한글 초성, 중성, 종성의 시작 위치
int baseCode = 0xAC00;
int choSungBase = 21 * 28;
int jungSungBase = 28;
if (ch < baseCode || ch > 0xD7A3) { // 한글 음절 범위 확인
return String.valueOf(ch); // 한글 음절이 아닐 경우 원문 그대로 반환
}
int unicodeIndex = ch - baseCode;
// 초성, 중성, 종성 분리
char choSung = (char) (0x1100 + unicodeIndex / choSungBase);
char jungSung = (char) (0x1161 + (unicodeIndex % choSungBase) / jungSungBase);
char jongSung = (char) (0x11A7 + unicodeIndex % jungSungBase);
if (jongSung == 0x11A7) { // 종성이 없을 경우
return "" + choSung + jungSung;
} else {
return "" + choSung + jungSung + jongSung;
}
}
}
결과 페이지이다.
'JAVA > Java Study' 카테고리의 다른 글
[동적 컴파일] 자바 동적 컴파일러 (0) | 2024.12.18 |
---|---|
[Java] Record (0) | 2024.10.30 |
[GIS] 1. Shp 파일 (1) | 2024.09.06 |
[Java] Mvc 패턴 Model1 , Model2 (0) | 2024.06.25 |
[Java] Virtual Thread (0) | 2024.06.05 |