본문 바로가기
JAVA/Java Study

[Java] 한글 자소분리

by 늑인 2024. 11. 8.

 

한글 검색을 할때 초성만으로 완성된 음절을 사용해야 되는 경우가 있을수 있다. 

다음은 예시 화면이다.

 

 

 

한글 조합형 유니코드표

 

다음에 유니코드 표를 참조하면 아래와 같은 코드를 생성 가능하다

 

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