프로그래밍/android2013. 7. 8. 17:03


   
//												ㄱ      ㄲ      ㄴ      ㄷ      ㄸ      ㄹ      ㅁ      ㅂ       ㅃ       ㅅ      ㅆ      ㅇ      ㅈ       ㅉ      ㅊ      ㅋ       ㅌ      ㅍ      ㅎ
	private final static char[] ChoSung = { 0x3131, 0x3132, 0x3134, 0x3137, 0x3138, 0x3139, 0x3141, 0x3142, 0x3143, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e };
//												ㅏ      ㅐ      ㅑ      ㅒ      ㅓ      ㅔ      ㅕ      ㅖ       ㅗ       ㅘ      ㅙ      ㅚ      ㅛ       ㅜ      ㅝ      ㅞ       ㅟ      ㅠ      ㅡ      ㅢ      ㅣ
	private final static char[] JungSung = { 0x314f, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160, 0x3161, 0x3162, 0x3163 };
//												  ㄱ      ㄲ      ㄳ      ㄴ      ㄵ      ㄶ      ㄷ       ㄹ       ㄺ      ㄻ      ㄼ      ㄽ       ㄾ      ㄿ      ㅀ       ㅁ       ㅂ      ㅄ      ㅅ      ㅆ      ㅇ      ㅈ       ㅊ      ㅋ      ㅌ       ㅍ      ㅎ
	private final static char[] JongSung = { 0, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140, 0x3141, 0x3142, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e };
	
/**
 * 한글의 제일 앞 자음을 가져온다
 */
public static String getJaso(String $str)
{
	int a; // 자소
	String result = $str;
	char ch = $str.charAt(0);
	
	// "AC00:가" ~ "D7A3:힣" 에 속한 글자면 분해
	if (ch >= 0xAC00 && ch <= 0xD7A3)
	{
		a = (ch - 0xAC00) / (21 * 28);
		result = ChoSung[a] + "";
	}
	return result;
}

/**
 * 한글 자소 분리
 * @param s
 * @return 김태희 -> ㄱㅣㅁㅌㅐㅎㅢ
 */
public static String hangulToJaso(String $str)
{
	// 유니코드 한글 문자열을 입력 받음
	int a, b, c; // 자소 버퍼: 초성/중성/종성 순
	String result = "";
	
	for (int i = 0; i < $str.length(); i++)
	{
		char ch = $str.charAt(0);
		
		if (ch >= 0xAC00 && ch <= 0xD7A3)
		{ // "AC00:가" ~ "D7A3:힣" 에 속한 글자면 분해
			c = ch - 0xAC00;
			a = c / (21 * 28);
			c = c % (21 * 28);
			b = c / 28;
			c = c % 28;
			result = result + ChoSung[a] + JungSung[b];
			if (c != 0)
				result = result + JongSung[c]; // c가 0이 아니면, 즉 받침이 있으면
		}
		else
		{
			result = result + ch;
		}
	}
	return result;
}


Posted by 쎄미

댓글을 달아 주세요