업데이트: 2010년 5월
기본적으로 String.Compare 메서드는 문화권 구분 및 대/소문자 구분 비교 작업을 수행합니다. 이 메서드에는 사용할 문화권을 지정할 수 있는 culture 매개 변수와 사용할 비교 규칙을 지정할 수 있는 comparisonType 매개 변수를 제공하는 몇 가지 오버로드도 포함되어 있습니다. 기본 오버로드 대신 이러한 메서드를 호출하면 특정 메서드 호출에서 사용되는 규칙에 대한 모든 모호성이 제거되고 특정 비교가 문화권을 구분하는지 여부가 명확히 나타납니다.
![]() |
---|
String.CompareTo 메서드의 두 오버로드는 문화권 구분 비교와 대/소문자 구분 비교를 수행합니다. 이 메서드를 사용하여 문화권을 구분하지 않는 비교를 수행할 수 없습니다.코드의 명확성을 위해 String.Compare 메서드를 대신 사용하는 것이 좋습니다. |
문화권 구분 작업의 경우 StringComparison.CurrentCulture 또는 StringComparison.CurrentCultureIgnoreCase 열거형 값을 comparisonType 매개 변수로 지정합니다. 현재 문화권이 아닌 지정된 문화권을 사용하여 문화권 구분 비교를 수행하려면 해당 문화권을 나타내는 CultureInfo 개체를 culture 매개 변수로 지정합니다.
String.Compare 메서드에서 지원하는 문화권을 구분하지 않는 문자열 비교는 언어적(고정 문화권의 정렬 규칙 기반)이거나 비언어적(문자열에 있는 문자의 서수 값 기반)입니다. 대부분의 문화권을 구분하지 않는 문자열 비교는 비언어적입니다. 이러한 비교의 경우 StringComparison.Ordinal 또는 StringComparison.OrdinalIgnoreCase 열거형 값을 comparisonType 매개 변수로 지정합니다. 예를 들어 사용자 이름 또는 암호 비교와 같은 보안 결정이 문자열 비교의 결과를 기반으로 하는 경우 결과가 특정 문화권 또는 언어 규칙의 영향을 받지 않도록 작업이 문화권을 구분하지 않고 비언어적이어야 합니다. 문화권 구분 문자열 비교 작업으로 인해 일관되지 않은 결과가 나타날 수 있는 경우에 대한 예제를 보려면 사용자 지정 대/소문자 매핑 및 정렬 규칙을 참조하십시오.
여러 문화권의 언어적으로 관련된 문자열을 일관성 있게 처리하려면 문화권을 구분하지 않는 언어적 문자열 비교를 사용합니다. 예를 들어 응용 프로그램에서 목록 상자에 여러 문자 집합을 사용하는 단어를 표시하는 경우 현재 문화권에 관계없이 동일한 순서로 단어를 표시하려고 할 수 있습니다. 문화권을 구분하지 않는 언어적 비교의 경우 .NET Framework에서는 영어의 언어적 규칙을 기반으로 하는 고정 문화권을 정의합니다. 문화권을 구분하지 않는 언어적 비교를 수행하려면 StringComparison.InvariantCulture 또는 StringComparison.InvariantCultureIgnoreCase를 comparisonType 매개 변수로 지정합니다.
다음 예제에서는 문화권을 구분하지 않는 비언어적 문자열 비교를 두 가지 수행합니다. 첫 번째 비교는 대/소문자를 구분하지만 두 번째 비교는 대/소문자를 구분하지 않습니다.
Public Class CompareSample
Public Shared Sub Main()
Dim string1 As String = "file"
Dim string2 As String = "FILE"
Dim compareResult As Integer
compareResult = String.Compare(string1, string2, _
StringComparison.Ordinal)
Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}",
StringComparison.Ordinal, string1, string2,
compareResult)
compareResult = String.Compare(string1, string2,
StringComparison.OrdinalIgnoreCase)
Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}",
StringComparison.OrdinalIgnoreCase, string1, string2,
compareResult)
End Sub
End Class
' The example displays the following output:
' Ordinal comparison of 'file' and 'FILE': 32
' OrdinalIgnoreCase comparison of 'file' and 'FILE': 0
using System;
public class CompareSample
{
public static void Main()
{
string string1 = "file";
string string2 = "FILE";
int compareResult = 0;
compareResult = String.Compare(string1, string2,
StringComparison.Ordinal);
Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}",
StringComparison.Ordinal, string1, string2,
compareResult);
compareResult = String.Compare(string1, string2,
StringComparison.OrdinalIgnoreCase);
Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}",
StringComparison.OrdinalIgnoreCase, string1, string2,
compareResult);
}
}
// The example displays the following output:
// Ordinal comparison of 'file' and 'FILE': 32
// OrdinalIgnoreCase comparison of 'file' and 'FILE': 0
참고 항목
참조
개념
.NET Framework에서 문자열 사용에 대한 유용한 정보
기타 리소스
변경 기록
날짜 |
변경 내용 |
이유 |
---|---|---|
2010년 5월 |
문자열 처리에 대한 최선의 방법을 반영하도록 개정되었습니다. |
콘텐츠 버그 수정 |