C# - String Compare() 소개, 예제

string의 Compare() 함수에 대해서 알아보고 다양한 예제를 소개합니다.

1. string.Compare() 함수

Compare()는 str1과 str2를 비교하여 결과를 0, 음수, 양수로 리턴합니다.

String.Compare(string str1, string str2)

결과 값의 의미는 아래와 같습니다.

  • 0: str1과 str2가 같음
  • 음수 : 같지 않음, 정렬 순서에서 str1가 str2보다 앞에 있음 (예를 들어, str1가 알파벳 순서로 정렬할 때 str2보다 앞에 있음)
  • 양수 : 같지 않음, 정렬 순서에서 str1가 str2보다 뒤에 있음 (예를 들어, str1가 알파벳 순서로 정렬할 때 str2보다 뒤에 있음)

2. Compare()로 문자열 비교

아래 4개 문자열들을 Compare()로 비교해보았습니다.

  • Compare(str1, str2) : 결과로 음수 리턴. (CJ보다 알파벳 순서가 앞에 있기 때문에)
  • Compare(str1, str3) : 결과로 0 리턴. (같은 문자열)
  • Compare(str1, str4) : 결과로 양수 리턴. (대문자 C가 소문자 c보다 알파벳 순서가 뒤에 있기 때문에)
using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            string str1 = "Hello, C#";
            string str2 = "Hello, Java";
            string str3 = "Hello, C#";
            string str4 = "Hello, c#";

            Console.WriteLine("1: " + string.Compare(str1, str2));
            Console.WriteLine("2: " + string.Compare(str1, str3));
            Console.WriteLine("3: " + string.Compare(str1, str4));
        }
    }
}

Output:

1: -1
2: 0
3: 1

3. 대소문자 구분 없이 문자열 비교

Compare()는 기본적으로 대소문자를 구분하여 비교합니다.

대소문자 없이 구분하고 싶을 때, Compare()의 3번째 인자로 StringComparison.OrdinalIgnoreCase를 전달하면 됩니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            string str1 = "Hello, C#";
            string str2 = "Hello, Java";
            string str3 = "Hello, C#";
            string str4 = "Hello, c#";

            Console.WriteLine("1: " + string.Compare(str1, str2, StringComparison.OrdinalIgnoreCase));
            Console.WriteLine("2: " + string.Compare(str1, str3, StringComparison.OrdinalIgnoreCase));
            Console.WriteLine("3: " + string.Compare(str1, str4, StringComparison.OrdinalIgnoreCase));
        }
    }
}

Output:

1: -7
2: 0
3: 0

4. 문자열이 같은지 비교

Compare()의 결과 값을 0과 비교하여 두개의 문자열이 같은지 체크할 수 있습니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            string str1 = "Hello, C#";
            string str2 = "Hello, Java";
            string str3 = "Hello, C#";
            string str4 = "Hello, c#";

            bool result = string.Compare(str1, str2) == 0;
            Console.WriteLine("str1 == str2 ? " + result);

            result = string.Compare(str1, str3) == 0;
            Console.WriteLine("str1 == str3 ? " + result);

            result = string.Compare(str1, str4) == 0;
            Console.WriteLine("str1 == str4 ? " + result);
        }
    }
}

Output:

str1 == str2 ? False
str1 == str3 ? True
str1 == str4 ? False

5. 문자열이 같은지 비교 (Ignore case)

3번째 인자에 StringComparison.OrdinalIgnoreCase를 전달하면 대소문자 구분 없이 비교를 합니다.

결과 값으로 0이 리턴될 때 문자열이 같다고 판단할 수 있습니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            string str1 = "Hello, C#";
            string str2 = "Hello, Java";
            string str3 = "Hello, C#";
            string str4 = "Hello, c#";

            bool result = string.Compare(str1, str2, StringComparison.OrdinalIgnoreCase) == 0;
            Console.WriteLine("str1 == str2 ? " + result);

            result = string.Compare(str1, str3, StringComparison.OrdinalIgnoreCase) == 0;
            Console.WriteLine("str1 == str3 ? " + result);

            result = string.Compare(str1, str4, StringComparison.OrdinalIgnoreCase) == 0;
            Console.WriteLine("str1 == str4 ? " + result);
        }
    }
}

Output:

str1 == str2 ? False
str1 == str3 ? True
str1 == str4 ? True
Loading script...
codechachaCopyright ©2019 codechacha