개발/C#
[2021.09] 입력문자가 어떤 언어인지 분별해주는 함수
다물칸
2021. 9. 4. 12:24
728x90
반응형
안녕하세요! 입력된 문자가 어느나라 문자인지 판별하는 함수를 소개합니다.
// OneByteChar = 영어
public enum LanguageType
{
Korean,
KoreanJaum,
KoreanMoum,
Japanese,
Chinese,
OneByteChar,
UnKnown,
OverBound
}
이렇게 상수 선언합니다.
public LanguageType GetLanguageType(string sourceString)
{
if (sourceString.Length > 2) return LanguageType.OverBound;
byte[] _tmp = System.Text.Encoding.Default.GetBytes(sourceString);
if (_tmp.Length != 2) return LanguageType.OneByteChar;
if ((_tmp[1] > 0xFE) || (_tmp[1] < 0xA1)) return LanguageType.UnKnown;
if ((_tmp[0] >= 0xB0) && (_tmp[0] <= 0xC8)) return LanguageType.Korean; //완성형 문자
else if (_tmp[0] == 0xA4) //한글 자모
{
if (_tmp[1] >= 161 && _tmp[1] <= 190) return LanguageType.KoreanJaum; //자음
else return LanguageType.KoreanMoum; //모음
}
else if ((_tmp[0] >= 0xCA) && (_tmp[0] <= 0xFD)) return LanguageType.Chinese; //한글 한자
if ((_tmp[0] >= 0xAA) && (_tmp[0] <= 0xAB)) return LanguageType.Japanese; //일본 가나
return LanguageType.UnKnown;
}
예상결과)
// 함수자체가 한글자씩 비교하는 구문이기 때문에 이 코드로 분리해서 체크합니다.
string strHan = "한글";
string sOneChar = strHan.Substring(i, 1);
LanguageType ex = GetLanguageType(sOneChar);
ㄴ ex = KoreanJaum
반응형