**
* @(#) HangulGati.java 2002/08/03
*
* 초성 19개: ㄱ ㄲ ㄴ ㄷ ㄸ ㄹ ㅁ ㅂ ㅃ ㅅ ㅆ ㅇ ㅈ ㅉ ㅊ ㅋ ㅌ ㅍ ㅎ
* 중성 21개: ㅏ ㅐ ㅑ ㅒ ㅓ ㅔ ㅕ ㅖ ㅗ ㅘ ㅙ ㅚ ㅛ ㅜ ㅝ ㅞ ㅟ ㅠ ㅡ ㅢ ㅣ
* 종성 28개: Fill ㄱ ㄲ ㄳ ㄴ ㄵ ㄶ ㄷ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ ㅄ ㅅ ㅆ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ
*
* 유니코드 2.0 한글의 범위
* AC00(가) ~ D7A3(힣)
*
* -------------
* 메소드 설명
* -------------
* public static String toDaro(String s)
* 한글의 초성, 중성, 종성을 분리하기
* 변환 예:
* 대-한민국! 코리아팀 파이팅! --> ㄷㅐ-ㅎㅏㄴㅁㅣㄴㄱㅜㄱ! ㅋㅗㄹㅣㅇㅏㅌㅣㅁ ㅍㅏㅇㅣㅌㅣㅇ!
* 2002년 6월 월드컵 4강 --> 2002ㄴㅕㄴ 6ㅇㅝㄹ ㅇㅝㄹㄷㅡㅋㅓㅂ 4ㄱㅏㅇ
*
* @date 2002/08/03
* @author Pilho Kim [phkim AT cluecom.co.kr]
*/
public class HangulDaro {
final static String[] chosung = { "ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", "ㄹ", "ㅁ", "ㅂ", "ㅃ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ" };
final static String[] moeum = { "ㅏ", "ㅐ", "ㅑ", "ㅒ", "ㅓ", "ㅔ", "ㅕ", "ㅖ", "ㅗ", "ㅘ", "ㅙ", "ㅚ", "ㅛ", "ㅜ", "ㅝ", "ㅞ", "ㅟ", "ㅠ", "ㅡ", "ㅢ", "ㅣ" };
final static String[] badchim = { "", "ㄱ", "ㄲ", "ㄳ", "ㄴ", "ㄵ", "ㄶ", "ㄷ", "ㄹ", "ㄺ", "ㄻ", "ㄼ", "ㄽ", "ㄾ", "ㄿ", "ㅀ", "ㅁ", "ㅂ", "ㅄ", "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ" };
public static String toDaro(String s) {
if (s == null)
return null;
String t = "";
String tmp = "";
int n, n1, n2, n3;
char c;
for (int i = 0; i < s.length(); i++) {
c = s.charAt(i);
n = (int)(c & 0xFFFF);
if (n >= 0xAC00 && n <= 0xD7A3) {
n = n - 0xAC00;
n1 = n / (21 * 28);
n = n % (21 * 28);
n2 = n / 28;
n3 = n % 28;
tmp = chosung[n1] + moeum[n2] + badchim[n3];
t += tmp;
}
else {
t += c;
}
}
return t;
}
public static void main(String[] args) {
String data = "대-한민국! 코리아팀 파이팅!";
System.out.println(data + " --> " + toDaro(data));
String data2 = "2002년 6월 월드컵 4강";
System.out.println(data2 + " --> " + toDaro(data2));
}
}
No comments:
Post a Comment