Culture를 구분하지 않는 대/소문자 변경 수행

업데이트: 2007년 11월

String.ToUpper, String.ToLower, Char.ToUpperChar.ToLower 메서드는 매개 변수를 받지 않는 오버로드를 제공합니다. 기본적으로 매개 변수가 없는 이러한 오버로드는 CultureInfo.CurrentCulture 값에 따라 대/소문자를 변경합니다. 이렇게 하면 문화권에 따라 다를 수 있는 대/소문자를 구분하는 결과가 생성됩니다. 대/소문자를 문화권 구분으로 변경할지 문화권을 구분하지 않음으로 변경할지 여부를 명확하게 하려면 이러한 메서드의 오버로드를 사용하여 culture 매개 변수를 명시적으로 지정해야 합니다. 문화권 구분으로 대/소문자를 변경하려면 culture 매개 변수에 대해 CultureInfo.CurrentCulture를 지정합니다. 문화권을 구분하지 않도록 대/소문자를 변경하려면 culture 매개 변수에 대해 CultureInfo.InvariantCulture를 지정합니다.

주로 문자열은 나중에 보다 쉽게 조회할 수 있도록 표준 대/소문자로 변환됩니다. 이러한 방식으로 문자열을 사용할 때는 대/소문자가 변경된 후 문자열이 조회되기 전에 Thread.CurrentCulture 값이 변경될 수도 있으므로 culture 매개 변수에 CultureInfo.InvariantCulture를 지정해야 합니다.

대/소문자 변경 작업에 따라 보안 결정을 수행하는 경우 CultureInfo.CurrentCulture 값의 영향을 받지 않는 결과를 얻기 위해 문화권을 구분하지 않도록 작업을 수행해야 합니다. 문화권 구분 문자열 작업으로 인해 일관되지 않은 결과가 나타날 수 있는 경우에 대한 예제를 보려면 사용자 지정 대/소문자 매핑 및 정렬 규칙을 참조하십시오.

String.ToUpper 및 String.ToLower 메서드 사용

코드의 명확성을 위해서는 culture 매개 변수를 명시적으로 지정할 수 있도록 하는 String.ToUpperString.ToLower 메서드의 오버로드를 항상 사용하는 것이 좋습니다. 예를 들어, 다음 코드에서는 식별자 조회를 수행합니다. key.ToLower 작업은 기본적으로 문화권 구분이 수행되지만 코드를 읽을 때는 이 동작이 명확하게 수행되지 않습니다.

예제

Shared Function LookupKey(key As String) As Object
   Return internalHashtable(key.ToLower())
End Function
static object LookupKey(string key) 
{
    return internalHashtable[key.ToLower()];
}

문화권을 구분하지 않도록 key.ToLower 작업을 수행하려면 대/소문자를 변경할 때 명시적으로 CultureInfo.InvariantCulture를 사용하도록 앞의 예제를 다음과 같이 변경해야 합니다.

Shared Function LookupKey(key As String) As Object
    Return internalHashtable(key.ToLower(CultureInfo.InvariantCulture))
End Function
static object LookupKey(string key) 
{
    return internalHashtable[key.ToLower(CultureInfo.InvariantCulture)];
}

Char.ToUpper 및 Char.ToLower 메서드 사용

Char.ToUpperChar.ToLower 메서드의 특징은 String.ToUpperString.ToLower 메서드와 동일하며 "tr-TR"(터키어-터키) 및 "az-Latn-AZ"(아제리어-라틴 문자-아제르바이잔) 문화권만 영향을 받습니다. 이 두 가지 문화권은 단일 문자의 대/소문자 차이를 보이는 유일한 문화권입니다. 이러한 독특한 대/소문자 매핑에 대한 자세한 내용은 사용자 지정 대/소문자 매핑 및 정렬 규칙을 참조하십시오. 코드의 명확성을 유지하고 일관적인 결과를 얻으려면 이러한 메서드의 오버로드 중 항상 culture 매개 변수를 명시적으로 지정할 수 있는 오버로드를 사용하는 것이 좋습니다.

참고 항목

참조

String.ToUpper

String.ToLower

Char.ToUpper

Char.ToLower

기타 리소스

Culture의 영향을 받지 않는 문자열 작업 수행