문화권을 구분하지 않는 문자열 비교 수행
업데이트: 2007년 11월
기본적으로 Compare 메서드는 문화권 구분 및 대/소문자 구분 비교 작업을 수행합니다. 그러나 culture 매개 변수를 제공하여 사용할 문화권을 지정할 수 있는 메서드의 String.Compare 오버로드가 제공됩니다. 응용 프로그램 코드는 문자열 작업이 문화권 구분 여부를 명확하게 나타내야 합니다. 문화권 구분 작업의 경우 CultureInfo.CurrentCulture 속성을 culture 매개 변수로 지정합니다. 문화권을 구분하지 않는 작업의 경우에는 CultureInfo.InvariantCulture 속성을 culture 매개 변수로 지정합니다.
문자열을 비교한 결과에 따라 보안 결정을 수행하는 경우 CultureInfo.CurrentCulture 값의 영향을 받지 않는 결과를 얻기 위해 문화권을 구분하지 않도록 작업을 수행해야 합니다. 문화권 구분 문자열 비교 작업으로 인해 일관되지 않은 결과가 나타날 수 있는 경우에 대한 예제를 보려면 사용자 지정 대/소문자 매핑 및 정렬 규칙을 참조하십시오.
String.CompareTo 메서드의 오버로드는 기본적으로 문화권 및 대/소문자를 구분하여 비교합니다. 그러나 이 메서드에 대해 문화권을 구분하지 않는 비교 작업을 지정할 수 있는 오버로드는 제공되지 않습니다. 코드의 명확성을 위해서는 문화권 구분 작업에 대해서는 CultureInfo.CurrentCulture를 지정하고 문화권을 구분하지 않는 작업에 대해서는 CultureInfo.InvariantCulture를 지정하여 대신 String.Compare 메서드를 사용하는 것이 좋습니다.
String.Compare 메서드 사용
다음 코드 줄은 String.Compare 메서드를 사용하여 대/소문자를 구분하고 문화권 구분 방식으로 string1과 string2를 비교하는 방법을 보여 줍니다. CultureInfo.CurrentCulture가 culture 매개 변수로 전달되어 CurrentCulture에 대해 대/소문자 매핑 및 정렬 규칙이 사용됨을 나타냅니다.
Dim compareResult As Integer = String.Compare(string1, string2, False, CultureInfo.CurrentCulture)
int compareResult = String.Compare(string1, string2, false, CultureInfo.CurrentCulture);
String.Compare 메서드를 사용하여 문화권 구분 비교 작업을 수행하는 방법을 보여 주는 완전한 코드 예제에 대해서는 특정 문화권의 데이터 비교 및 정렬을 참조하십시오.
이 작업이 문화권을 구분하지 않게 하려면 CultureInfo.InvariantCulture를 culture 매개 변수로 지정해야 합니다. 다음 코드 줄은 이 내용을 보여 줍니다.
Dim compareResult As Integer = String.Compare(string1, string2, False, CultureInfo.InvariantCulture)
int compareResult = String.Compare(string1, string2, false, CultureInfo.InvariantCulture);
다음 코드 예제에서는 앞의 코드 줄을 사용하여 문화권을 구분하지 않는 문자열 비교를 수해하는 방법을 보여 줍니다.
Imports System
Imports System.Globalization
Public Class CompareSample
Public Shared Sub Main()
Dim string1 As String = "file"
Dim string2 As String = "FILE"
Dim compareResult As Integer = String.Compare(string1, string2, _
False, CultureInfo.InvariantCulture)
Console.WriteLine("A case-insensitive comparison of {0} and {1} is _
{2}", string1, string2, compareResult)
End Sub
End Class
using System;
using System.Globalization;
public class CompareSample
{
public static void Main()
{
String string1 = "file";
String string2 = "FILE";
int compareResult = String.Compare(string1, string2, false,
CultureInfo.InvariantCulture);
Console.WriteLine("A case-insensitive comparison of {0} and {1} is
{2}", string1, string2, compareResult);
}
}
String.CompareTo 메서드 사용
다음 예제에서는 String.CompareTo 메서드를 사용하여 string1과 string2를 비교합니다. 기본적으로 문화권 구분 및 대/소문자 구분 방식으로 비교가 수행됩니다.
Dim compareResult As Integer = string1.CompareTo(string2)
int compareResult = string1.CompareTo(string2);
culture 매개 변수가 명시적으로 전달되지 않으므로 위 예제의 의도는 명확하지 않습니다. 응용 프로그램에서는 String.CompareTo 메서드 대신 String.Compare 메서드를 사용하여 응용 프로그램에서 문화권을 구분할지 여부를 명확히 나타내야 합니다. string1과 string2를 대/소문자 및 문화권을 구분하는 방식으로 비교하려는 경우에는 응용 프로그램에서 CultureInfo.CurrentCulture를 culture 매개 변수로 전달해야 합니다. 이렇게 하면 다음 예제와 같이 CurrentCulture의 대/소문자 매핑 및 정렬 규칙이 사용됩니다.
Dim compareResult As Integer = String.Compare(string1, string2, False, CultureInfo.CurrentCulture)
int compareResult = String.Compare(string1, string2, false, CultureInfo.CurrentCulture);
string1과 string2를 대/소문자를 구분하고 문화권을 구분하지 않는 방식으로 비교하려는 경우에는 응용 프로그램에서 CultureInfo.InvariantCulture를 culture 매개 변수로 전달해야 합니다. 이렇게 하면 다음 예제와 같이 InvariantCulture의 대/소문자 매핑 및 정렬 규칙이 사용됩니다.
Dim compareResult As Integer = String.Compare(string1, string2, False, CultureInfo.InvariantCulture)
int compareResult = String.Compare(string1, string2, false, CultureInfo.InvariantCulture);
String.Compare 메서드를 사용하여 문화권을 구분하지 않는 결과를 얻는 방법을 보여 주는 완전한 코드 예제에 대해서는 String.Compare 메서드 사용을 참조하십시오.