정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

String.Compare 메서드 (String, Int32, String, Int32, Int32)

2013-12-13

지정된 두 String 개체에서 추출한 부분 문자열에 대해 문화권 구분 비교를 수행하고 정렬 순서에서 서로의 관계를 나타내는 정수를 반환합니다.

Namespace:  System
어셈블리:  mscorlib(mscorlib.dll)

public static int Compare(
	string strA,
	int indexA,
	string strB,
	int indexB,
	int length
)

매개 변수

strA
형식: System.String
비교에 사용할 첫 번째 문자열입니다.
indexA
형식: System.Int32
strA에 있는 부분 문자열의 위치입니다.
strB
형식: System.String
비교에 사용할 두 번째 문자열입니다.
indexB
형식: System.Int32
strB에 있는 부분 문자열의 위치입니다.
length
형식: System.Int32
비교할 부분 문자열의 최대 문자 수입니다.

반환 값

형식: System.Int32
두 비교 대상 간의 어휘 관계를 나타내는 32비트 부호 있는 정수를 반환합니다.

조건

0보다 작음

strA의 부분 문자열이 strB의 부분 문자열보다 작습니다.

0

부분 문자열이 같거나 length가 0입니다.

0보다 큼

strA의 부분 문자열이 strB의 부분 문자열보다 큽니다.

예외조건
ArgumentOutOfRangeException

indexAstrA.Length보다 큰 경우

-또는-

indexBstrB.Length보다 큰 경우

-또는-

indexA, indexB 또는 length가 음수인 경우

-또는-

indexA 또는 indexBnull이고 length가 0보다 큰 경우

비교할 부분 문자열은 strAindexA 위치 및 strBindexB 위치에서 시작됩니다. indexAindexB는 모두 0부터 시작합니다. 즉, strAstrB에서 첫 번째 문자의 위치는 1이 아닌 0입니다. 첫 번째 부분 문자열의 길이는 strA의 길이에서 indexA를 뺀 값에 1을 더한 값입니다. 두 번째 부분 문자열의 길이는 strB의 길이에서 indexB를 뺀 값에 1을 더한 값입니다.

비교할 문자 수는 두 개의 부분 문자열 길이와 length 중에서 가장 작은 수입니다. indexA, indexBlength 매개 변수에는 음수를 사용할 수 없습니다.

비교하는 경우 현재 문화권을 사용하여 개별 문자의 대/소문자 규칙과 사전순 등의 문화권별 정보를 얻습니다. 예를 들어, 문화권에서는 특정 문자 조합을 단일 문자로 처리하거나, 대/소문자를 특별한 방식으로 비교하거나, 문자의 정렬 순서를 앞이나 뒤에 있는 문자에 따라 결정하도록 지정합니다.

주의주의:

Compare(String, Int32, String, Int32, Int32) 메서드는 주로 사전순으로 정렬하는 작업에 사용하도록 설계되었습니다. 두 문자열이 동일한지 여부를 확인할 용도로는 이 메서드를 사용하지 말아야 합니다. 즉, 이 메서드를 호출하여 반환 값이 0인지 테스트하지 말아야 합니다. 두 문자열이 같은지를 확인하려면 Equals 메서드를 호출합니다.

단어 정렬 규칙을 사용하여 비교를 수행합니다. 단어, 문자열 및 서수 정렬에 대한 자세한 내용은 System.Globalization.CompareOptions를 참조하세요.

주의주의:

문자열을 비교할 때에는 메서드가 사용하는 문자열 비교 형식을 명시적으로 지정해야 하는 Compare 메서드를 호출해야 합니다.

하나 또는 두 비교 대상이 null일 수 있습니다. 정의에 따르면, 빈 문자열("")을 포함한 모든 은 null 참조보다 큰 것으로 간주되고 두 개의 null 참조는 서로 같은 것으로 간주됩니다.

불일치가 발견되거나 두 부분 문자열 비교가 완료되면 비교가 종결됩니다. 그러나 두 문자열을 비교한 결과 한 문자열의 끝과 동일하고 다른 문자열에 문자가 남아 있는 경우, 문자가 남아 있는 문자열이 더 큰 것으로 간주됩니다. 반환 값은 마지막으로 수행한 비교의 결과입니다.

비교 작업이 문화권별 대/소문자 규칙에 영향을 받는 경우 예기치 않은 결과가 발생할 수 있습니다. 예를 들어, 터키어의 파일 시스템은 "file"의 'i' 문자에 대해 대/소문자 규칙을 사용하지 않으므로 다음 예제에서는 잘못된 결과가 발생합니다.

서수 비교를 사용하여 경로 이름을 "file"과 비교합니다. 이렇게 하려면 다음과 같이 정확한 코드를 사용합니다.

다음 코드 예제에서는 두 개의 부분 문자열을 비교합니다.


// Sample for String.Compare(String, Int32, String, Int32, Int32)
using System;

class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      //                 0123456
      String str1 = "machine";
      String str2 = "device";
      String str;
      int result;

      outputBlock.Text += "\n";
      outputBlock.Text += String.Format("str1 = '{0}', str2 = '{1}'", str1, str2) + "\n";
      result = String.Compare(str1, 2, str2, 0, 2);
      str = ((result < 0) ? "less than" : ((result > 0) ? "greater than" : "equal to"));
      outputBlock.Text += String.Format("Substring '{0}' in '{1}' is ", str1.Substring(2, 2), str1);
      outputBlock.Text += String.Format("{0} ", str);
      outputBlock.Text += String.Format("substring '{0}' in '{1}'.", str2.Substring(0, 2), str2) + "\n";
   }
}
/*
This example produces the following results:

str1 = 'machine', str2 = 'device'
Substring 'ch' in 'machine' is less than substring 'de' in 'device'.
*/


Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시: