C#에서 Enums를 인간 친화적인 값으로 변환하기

Enums(열거형)는 C#에서 상수 집단을 나타내는 특별한 “클래스"입니다. 이들은 미리 정의된 값 집합을 가질 수 있는 변수 타입을 정의하는 데 널리 사용됩니다. 그러나 enums와 작업할 때, 이들의 코드 이름을 인간이 읽을 수 있는 문자열로 변환하는 것은 도전이 될 수 있습니다. 이 포스팅에서는 이 문제를 해결하고 간단한 해결책을 제공합니다.

Enum 가독성의 도전

다음과 같이 정의된 enum이 있다고 가정해봅시다:

public enum SampleEnum
{
    ThisIsValueA,
    ThisIsValueB,
    AnotherValue
}

이 enum을 사용하여 애플리케이션에서 ThisIsValueA를 사용자 친화적인 방식으로 표시해야 한다면, “This is Value A"로 보이기를 원할 것입니다. 문제는 이러한 카멜 케이스 명명 규칙을 깔끔하고 읽기 쉬운 텍스트로 자동 변환하는 데 있습니다.

해결책: 간단한 Wordify 메서드

enum 값을 인간 친화적인 문자열로 변환하기 위해 Wordify라는 메서드를 사용할 수 있습니다. 이 메서드는 PascalCase(이것이 보통 enum 이름을 정의하는 방식)로 전달된 문자열을 받아 필요에 따라 단어 사이에 공백을 추가합니다.

단계별로 분해해 보겠습니다:

단계 1: Wordify 메서드 구현하기

코드에 Wordify 메서드를 다음과 같이 구현할 수 있습니다:

using System.Text.RegularExpressions;

public static string Wordify(string pascalCaseString)
{            
    Regex regex = new Regex("(?<=[a-z])(?<x>[A-Z])|(?<y>.)(?<x>[A-Z])(?=[a-z])");
    return regex.Replace(pascalCaseString, " ${x}");
}

설명:

  • 정규 표현식 패턴: 정규 표현식 패턴은 소문자 다음에 오는 대문자이거나 소문자 다음에 오는 대문자를 찾습니다. 이는 약어(대문자로 이루어진 그룹)가 그대로 유지되도록 보장합니다.
  • 반환 문: 메서드는 이러한 일치를 공백과 일치하는 대문자와 함께 교체하여 별개의 단어로 나눕니다.

단계 2: Wordify 메서드 사용하기

메서드를 실제로 보기 위해 다음 코드를 실행해 볼 수 있습니다:

Console.WriteLine(Wordify(SampleEnum.ThisIsValueA.ToString()));

출력:

이 코드 줄은 다음과 같은 출력을 생성합니다:

"This Is Value A"

Wordify의 장점

  • 단순성: 최소한의 코드로 간단한 해결책입니다.
  • 속성 회피: 이 방법은 enum에 대한 설명 속성을 정의하는 것보다 간단하고 중복이 적어 코드가 불필요하게 복잡해지는 것을 방지합니다.
  • 직접적인 접근: 추가적인 오버헤드 없이 인간이 읽을 수 있는 enum 이름을 얻을 수 있습니다.

결론

C#에서 enums를 인간 친화적인 값으로 변환하는 것은 복잡할 필요가 없습니다. Wordify 메서드를 구현함으로써, 몇 줄의 코드로 PascalCase 문자열을 사용자 친화적인 형식으로 쉽게 변환할 수 있어 애플리케이션의 명확성과 사용성을 향상시킬 수 있습니다. 이 방법을 다음 프로젝트에 통합하여 사용자에게 enum 값을 표시하는 과정을 간소화해 보세요.