-
Notifications
You must be signed in to change notification settings - Fork 0
Naramal.Josa
SteamB23 edited this page Jul 31, 2020
·
6 revisions
조사를 문자열 포맷에 맞게 변환해주는 포맷 제공자입니다. 기본적으로 조사라고 칭하고 있으나 비슷한 규칙을 따르는 접미사들도 사용 가능합니다.
이것은 text(이/)다.
text(은/는) 맛있다.
text(와/과) 밥을 먹었다.
그건 text(이에/예)요.
text = 소시지
이것은 소시지다.
소시지는 맛있다.
소시지와 밥을 먹었다.
그건 소시지예요.
text = 미역국
이것은 미역국이다.
미역국은 맛있다.
미역국과 밥을 먹었다.
그건 미역국이에요.
특수 규칙으로, '으로'의 경우 받침이 ㄹ이거나 없으면 '로'로 변화합니다.
나는 text(으로/로)간다.
text = 원주
나는 원주로 간다.
text = 부산
나는 부산으로 간다.
text = 서울
나는 서울로 간다.
포맷 문자열에 받침있을때/받침없을때
로 구분하여 사용하시면 됩니다.
한국어에서 받침이 없는 '소시지', 받침이 있는 '미역국'이라는 단어가 있을 때 문장은 다음과 같이 변화합니다.
가장 권장되는 사용법이며 다음과 같이 사용 가능합니다.
Josa.Interpolation($"이것은 {text:이/}다.");
Josa.Interpolation($"{text:은/는} 맛있다.");
Josa.Interpolation($"{text:과/와} 밥을 먹었다.");
Josa.Interpolation($"그건 {text:이에/예}요.");
Josa.Interpolation($"나는 {text:으로/로} 간다.");
문자열 보간과 사용법은 비슷합니다. 다만 전통적인 서식 문자열 방식입니다.
주의
Josa.Format에서 문자열 보간을 사용하면 컴파일러 규칙에 따라 조사가 처리 되지 않을 수 있습니다. 필요한 경우 Josa.Interpolation 메서드를 사용하시기 바랍니다.
Josa.Format("이것은 {0:이/}다.", text);
Josa.Format("{0:은/는} 맛있다.", text);
Josa.Format("{0:과/와} 밥을 먹었다.", text);
Josa.Format("그건 {0:이에/예}요.", text);
Josa.Format("나는 {0:으로/로} 간다.", text);
특정 문화권의 날짜 및 숫자 서식을 사용해야하면 Josa 클래스 인스턴스 생성시 CultureInfo
형식의 참조를 넘겨주면됩니다.
var josaCulture = new Josa(CultureInfo.CurrentCulture);
josaCulture.Interpolation($"{text:은/는} {now}에 수확되었습니다.");
인스턴스를 유지할 필요가 없다면 다음과 같이 사용가능합니다. 메서드 내부에서 인스턴스를 생성한 뒤 폐기하므로 참고하세요.
Josa.Interpolation(CultureInfo.CurrentCulture, $"{text:은/는} {now}에 수확되었습니다.");
비효율적인 방법이지만 필요한 경우 사용할 수 있도록 기술하였습니다. 별다른 이유가 없다면 일반적인 서식 문자열이나 문자열 보간을 사용하시는 것을 추천합니다. Interpolation
메서드나 Format
메서드는 내부적으로 Process
메서드를 사용하며 그 내부에서는 Select
메서드를 호출해 결합될 조사/접미사를 선택합니다.
"이것은" + Josa.Process(text, "이/") + "다.";
Josa.Process(text, "은/는") + "맛있다.";
Josa.Process(text, "과/와") + "밥을 먹었다.";
"그건 " + Josa.Process(text, "이에/예") + "요.";
"나는 " + Josa.Process(text, "으로/로") + " 간다.";
"이것은" + text + Josa.Select(text, "이/") + "다.";
text + Josa.Select(text, "은/는") + "맛있다.";
text + Josa.Select(text, "과/와") + "밥을 먹었다.";
"그건 " + text + Josa.Select(text, "이에/예") + "요.";
"나는 " + text + Josa.Select(text, "으로/로") + " 간다.";