JAVA/Java Study
[Java] 한글 자소분리
늑인
2024. 11. 8. 11:31
한글 검색을 할때 초성만으로 완성된 음절을 사용해야 되는 경우가 있을수 있다.
다음은 예시 화면이다.
다음에 유니코드 표를 참조하면 아래와 같은 코드를 생성 가능하다
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;
}
}
}
결과 페이지이다.