내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

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

2013-12-13

지정된 문자열 비교 옵션을 사용하여 지정된 두 String 개체를 비교하고 정렬 순서에서 서로의 관계를 나타내는 정수를 반환합니다.

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

public static int Compare(
	string strA,
	string strB,
	StringComparison comparisonType
)

매개 변수

strA
형식: System.String
비교할 첫째 문자열입니다.
strB
형식: System.String
비교할 둘째 문자열입니다.
comparisonType
형식: System.StringComparison
비교에 사용할 규칙을 지정하는 열거형 값 중 하나입니다.

반환 값

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

조건

0보다 작음

strAstrB보다 작은 경우

0

strAstrB와 같은 경우

0보다 큼

strAstrB보다 큰 경우

예외조건
ArgumentException

comparisonTypeStringComparison 값이 아닌 경우

NotSupportedException

StringComparison이 지원되지 않는 경우

comparisonType 매개 변수는 비교에서 현재 또는 고정 문화권을 사용해야 하는지 여부, 비교 대상의 대/소문자를 구분해야 하는지 여부, 단어(문화권 구분) 또는 서수(문화권 구분 안 함) 정렬 규칙을 사용해야 하는지 여부를 나타냅니다.

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

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

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

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

다음 코드 예제에서는 세 가지 버전의 'I' 문자를 비교합니다. 결과는 문화권 선택, 대/소문자를 구분하는지 여부 및 서수 비교가 수행되는지 여부에 따라 달라집니다.


// This example demonstrates the 
// System.String.Compare(String, String, StringComparison) method.

using System;
using System.Threading;

class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      string intro = "Compare three versions of the letter I using different " +
                     "values of StringComparison.";

      // Define an array of strings where each element contains a version of the 
      // letter I. (An array of strings is used so you can easily modify this 
      // code example to test additional or different combinations of strings.)  

      string[] threeIs = new string[3];
      // LATIN SMALL LETTER I (U+0069)
      threeIs[0] = "\u0069";
      // LATIN SMALL LETTER DOTLESS I (U+0131)
      threeIs[1] = "\u0131";
      // LATIN CAPITAL LETTER I (U+0049)
      threeIs[2] = "\u0049";

      string[] unicodeNames = 
             {
             "LATIN SMALL LETTER I (U+0069)", 
             "LATIN SMALL LETTER DOTLESS I (U+0131)", 
             "LATIN CAPITAL LETTER I (U+0049)"
             };

      StringComparison[] scValues = {
        StringComparison.CurrentCulture,
        StringComparison.CurrentCultureIgnoreCase,
        StringComparison.InvariantCulture,
        StringComparison.InvariantCultureIgnoreCase,
        StringComparison.Ordinal,
        StringComparison.OrdinalIgnoreCase };

      //
      outputBlock.Text += intro + "\n";

      // Display the current culture because the culture-specific comparisons
      // can produce different results with different cultures.
      outputBlock.Text += String.Format("The current culture is {0}.\n",
                         Thread.CurrentThread.CurrentCulture.Name) + "\n";

      // Determine the relative sort order of three versions of the letter I. 
      foreach (StringComparison sc in scValues)
      {
         outputBlock.Text += String.Format("StringComparison.{0}:", sc) + "\n";

         // LATIN SMALL LETTER I (U+0069) : LATIN SMALL LETTER DOTLESS I (U+0131)
         Test(outputBlock, 0, 1, sc, threeIs, unicodeNames);

         // LATIN SMALL LETTER I (U+0069) : LATIN CAPITAL LETTER I (U+0049)
         Test(outputBlock, 0, 2, sc, threeIs, unicodeNames);

         // LATIN SMALL LETTER DOTLESS I (U+0131) : LATIN CAPITAL LETTER I (U+0049)
         Test(outputBlock, 1, 2, sc, threeIs, unicodeNames);

         outputBlock.Text += "\n";
      }
   }

   protected static void Test(System.Windows.Controls.TextBlock outputBlock, int x, int y,
                              StringComparison comparison,
                              string[] testI, string[] testNames)
   {
      string resultFmt = "{0} is {1} {2}";
      string result = "equal to";
      int cmpValue = 0;
      //
      cmpValue = String.Compare(testI[x], testI[y], comparison);
      if (cmpValue < 0)
         result = "less than";
      else if (cmpValue > 0)
         result = "greater than";
      outputBlock.Text += String.Format(resultFmt, testNames[x], result, testNames[y]) + "\n";
   }
}

/*
This code example produces the following results:

Compare three versions of the letter I using different values of StringComparison.
The current culture is en-US.

StringComparison.CurrentCulture:
LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131)
LATIN SMALL LETTER I (U+0069) is less than LATIN CAPITAL LETTER I (U+0049)
LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)

StringComparison.CurrentCultureIgnoreCase:
LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131)
LATIN SMALL LETTER I (U+0069) is equal to LATIN CAPITAL LETTER I (U+0049)
LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)

StringComparison.InvariantCulture:
LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131)
LATIN SMALL LETTER I (U+0069) is less than LATIN CAPITAL LETTER I (U+0049)
LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)

StringComparison.InvariantCultureIgnoreCase:
LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131)
LATIN SMALL LETTER I (U+0069) is equal to LATIN CAPITAL LETTER I (U+0049)
LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)

StringComparison.Ordinal:
LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131)
LATIN SMALL LETTER I (U+0069) is greater than LATIN CAPITAL LETTER I (U+0049)
LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)

StringComparison.OrdinalIgnoreCase:
LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131)
LATIN SMALL LETTER I (U+0069) is equal to LATIN CAPITAL LETTER I (U+0049)
LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)

*/


Windows Phone OS

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

Windows Phone

표시:
© 2014 Microsoft