[C#] 한국어 조사 을를, 이가, 은는 가져오기 예제 자료

한국어 조사 중에 '을'과 '를', '이'와 '가', 그리고 '은'과 '는' 중에 어떠한 조사를 가져오면 될지에 관한 확장 메서드 예제 자료입니다.

한국어 조사 을를, 이가, 은는 가져오기

한국어 조사 을를, 이가, 은는 가져오기

다음 자료는 내(이, 가) 그의 이름(을, 를) 불러 주었을 때 그(은, 는) 나에게로 와서 꽃(이, 가) 되었다. 문장에서 어떻가 한국어 조사를 가져와야 하는지에 대한 테스트 자료입니다.

  • 내(이, 가) => 내가
  • 이름(을, 를) => 이름을
  • 그(은, 는) => 그는
  • 꽃(이, 가) => 꽃이
//내가 그의 이름을 불러 주었을 때 그는 나에게로 와서 꽃이 되었다.
string particle = $"{"내".GetKoreanParticle(CoreBeomSang.ParticleType.이가)} 
                    그의 {"이름".GetKoreanParticle(CoreBeomSang.ParticleType.을를)} 
                    불러 주었을 때 {"그".GetKoreanParticle(CoreBeomSang.ParticleType.은는)} 
                    나에게로 와서 
                    {"꽃".GetKoreanParticle(CoreBeomSang.ParticleType.이가)} 되었다.";

다음 자료는 한글 조사 예제 자료입니다. 예제코드이므로 입맛에 맞추어 가공해서 사용해 주세요. 작동원리는 다음과 같습니다.

먼저, 입력한 단어의 가장 마지막 문자가 한글 음절 가(유니코드 0xAC00)에서 힣(유니코드 0xD7A3)인지 점검합니다.

그리고, 한글 유니코드가 속한 레인지에서 초항(0xAC00)을 제외하고 종성 28자 ('', 'ㄱ', 'ㄲ', 'ㄳ', 'ㄴ', 'ㄵ', 'ㄶ', 'ㄷ', 'ㄹ', 'ㄺ', 'ㄻ', 'ㄼ', 'ㄽ', 'ㄾ', 'ㄿ', 'ㅀ', 'ㅁ', 'ㅂ', 'ㅄ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ')를 나눈 몫을 구합니다.

마지막으로, 몫이 0이면 종성이 없는 글자이므로 '를', '가', 또는 '는'으로 조사를 설정하고 그 외에는 '을', '이', 또는 '가'로 설정하겠습니다.

public enum ParticleType
{
    을를,
    이가,
    은는
}

public static string GetKoreanParticle(this string text, ParticleType type)
{
    try
    {
        int res = -1;
        string particle = string.Empty;
        char c = text[text.Length - 1];
        if (c >= 0xAC00 && c <= 0xD7A3)
        {
            if ((c - 0xAC00) % 28 == 0)
            {
                res = 0;
            }
            else
            {
                res = 1;
            }

            switch (type)
            {
                case ParticleType.을를:
                    particle = res == 0 ? "를" : "을";
                    break;
                case ParticleType.이가:
                    particle = res == 0 ? "가" : "이";
                    break;
                case ParticleType.은는:
                    particle = res == 0 ? "는" : "은";
                    break;
                default:
                    particle = string.Empty;
                    break;
            }
        }

        return $"{text}{particle}";
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

댓글