즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

개발/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
반응형