C#에서 쉽게 Ordinals 생성하기

숫자를 다루다 보면, 그것들을 서수로 표시하고 싶을 수 있습니다. 서수는 숫자가 순서에서 차지하는 위치를 의미하며, 예를 들어 1st, 2nd, 또는 3rd와 같은 형식입니다. C# 개발자라면, 이러한 서수를 생성할 수 있는 쉬운 방법이 있는지 궁금해했을 것입니다. 당신만 그런 것이 아닙니다.

이번 블로그 포스트에서는 C#에서 서수를 생성하는 방법을 다루고, 이를 달성할 수 있는 간단한 함수를 제공합니다. 단계별로 알아보겠습니다.

Ordinals 이해하기

서수는 집합 내에서 무언가의 순위 또는 위치를 나타냅니다. 예를 들어:

  • 1은 1st로 표시됩니다.
  • 2는 2nd로 표시됩니다.
  • 3은 3rd로 표시됩니다.

도전 과제

C#은 String.Format()을 통해 다양한 형식 옵션을 제공하지만, 서수 숫자를 생성하기 위한 내장 기능이 제공되지 않음을 발견했을 것입니다. 이는 불편할 수 있지만, 극복할 수 없는 문제는 아닙니다.

C#에서 Ordinals 구현하기

내장 함수에 의존하기보다는 정수를 그 서수 문자열 표현으로 변환하는 간단한 함수를 작성할 수 있습니다. 그 방법은 다음과 같습니다.

코드 보기

C# 프로젝트에서 정적 메소드를 생성하면 됩니다:

public static string AddOrdinal(int num)
{
    if(num <= 0) return num.ToString();

    switch(num % 100)
    {
        case 11:
        case 12:
        case 13:
            return num + "th";
    }

    switch(num % 10)
    {
        case 1:
            return num + "st";
        case 2:
            return num + "nd";
        case 3:
            return num + "rd";
        default:
            return num + "th";
    }
}

코드 설명

  1. 입력 검증:

    • 함수는 먼저 숫자가 0 이하인지 확인합니다. 만약 그렇다면, 숫자는 문자열로 간단히 반환되며, 서수는 0 이하의 값에 대해 존재하지 않기 때문입니다.
  2. 특수 사례 처리:

    • 함수는 11, 12, 13으로 끝나는 숫자와 관련된 예외를 처리합니다 (예: 11th, 12th, 13th).
  3. 접미사 결정:

    • 다음으로, 숫자의 마지막 자리를 확인하여 적절한 접미사를 결정합니다:
      • “st"는 1에 대한 접미사
      • “nd"는 2에 대한 접미사
      • “rd"는 3에 대한 접미사
      • “th"는 그 외 모든 경우에 대한 접미사

사용 예시

C# 코드의 어디에서든 다음과 같이 이 함수를 호출할 수 있습니다:

string firstOrdinal = AddOrdinal(1); // "1st" 출력
string secondOrdinal = AddOrdinal(2); // "2nd" 출력
string eleventhOrdinal = AddOrdinal(11); // "11th" 출력

결론

C#에서 서수를 생성하는 것은 사용자 정의 함수를 통해 간단합니다. .NET 프레임워크는 현재 서수를 쉽게 형식화할 수 있는 내장 방법을 제공하지 않지만, 위에서 공유한 방법은 최소한의 노력으로 이러한 기능을 추가할 수 있게 해줍니다.

이 구현은 국제화되어 있지 않다는 점을 염두에 두어야 합니다. 즉, 영어 서수에만 작동합니다. 다른 언어에 대한 지원이 필요한 경우, 반드시 테스트하고 확장해야합니다!

요약하자면, 약간의 코드만으로 C#에서 ordinals를 생성하는 기능을 추가하여 애플리케이션의 기능성과 사용자 경험을 향상시킬 수 있습니다.