Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# String.ToLowerInvariant() 메서드 – 문화권에 독립적인 소문자 변환 방법

C#의 String.ToLowerInvariant() 메서드는 문자열을 불변 문화권(invariant culture)의 대소문자 규칙에 따라 모두 소문자로 변환한 새로운 문자열을 반환합니다. 이 메서드는 운영체제나 사용자의 로캘(지역 설정)과 무관하게 항상 동일한 결과를 보장하기 때문에, 문화권 설정에 영향을 받으면 안 되는 문자열 비교나 데이터 정규화 작업에 특히 유용합니다.

구문

ToLowerInvariant() 메서드의 기본 구문은 다음과 같습니다.

public string ToLowerInvariant ();

예제 1

아래 예제에서는 두 개의 문자열에 대해 ToLowerInvariant() 메서드를 호출하여 변환 결과를 확인하고, Equals() 메서드로 두 문자열의 동일 여부도 함께 살펴봅니다.

using System;
using System.Text;
public class Demo {
   public static void Main(String[] args) {
      string str1 = "Pink Floyd";
      string str2 = "Ariana";
      Console.WriteLine("String 1 = "+str1);
      Console.WriteLine("String1 ToLowerInvariant = "+str1.ToLowerInvariant());
      Console.WriteLine("String 2 = "+str2);
      Console.WriteLine("String2 ToLowerInvariant = "+str2.ToLowerInvariant());
      Console.WriteLine("String 1 is equal to String 2: {0}", str1.Equals(str2));
   }
}

실행 결과

String 1 = Pink Floyd
String1 ToLowerInvariant = pink floyd
String 2 = Ariana
String2 ToLowerInvariant = ariana
String 1 is equal to String 2: False

위 실행 결과에서 볼 수 있듯이, 대문자가 포함된 "Pink Floyd"와 "Ariana"가 각각 "pink floyd", "ariana"로 변환되었습니다. 또한 두 문자열은 서로 다르기 때문에 Equals() 비교 결과는 False로 출력됩니다.

예제 2

이번에는 이미 소문자인 문자열과 대소문자가 혼합된 문자열에 메서드를 적용하는 예제입니다.

using System;
using System.Text;
public class Demo {
   public static void Main(String[] args) {
      string str1 = "one";
      string str2 = "TWO";
      string str3 = "ThrEE";
      Console.WriteLine("String 1 = "+str1);
      Console.WriteLine("String1 ToLowerInvariant = "+str1.ToLowerInvariant());
      Console.WriteLine("String 2 = "+str2);
      Console.WriteLine("String2 ToLowerInvariant = "+str2.ToLowerInvariant());
      Console.WriteLine("String 3 = "+str3);
      Console.WriteLine("String3 ToLowerInvariant = "+str3.ToLowerInvariant());
   }
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.

String 1 = one
String1 ToLowerInvariant = one
String 2 = TWO
String2 ToLowerInvariant = two
String 3 = ThrEE
String3 ToLowerInvariant = three

ToLowerInvariant()와 ToLower()의 차이점

ToLower() 메서드는 현재 스레드의 문화권(culture) 설정을 따르지만, ToLowerInvariant()는 문화권과 무관한 고정된 규칙을 사용합니다. 예를 들어 터키어 문화권에서는 'I'가 'i'가 아닌 'ı'로 변환되는 등의 차이가 발생할 수 있습니다. 따라서 파일 경로, 열거형(enum) 문자열, 프로토콜 키처럼 환경과 관계없이 일관된 동작이 필요한 경우에는 ToLowerInvariant()를 사용하는 것이 권장됩니다.