본문 바로가기

Asp.net (C#.net)

asp.net (c#) 문자열 비교 (Compare, CompareTo, Equals, ==)

문자열 비교를 할때가 많다.

보통 변수A == 변수B 이런형태로도 많이 비교한다.

대소문자의 구분 유무로 인해서 ToUpper() 나 ToLower() 를 사용해서 사용하기도 한다.

하지만 크기 비교를 해야할때도 있다. 문자열을 크기 비교라니..;; 현실은 자주 쓴다..ㅋ

그래서 asp.net 에는 문자열 비교 함수가 준비되어있다.

 

1. Compare

string.Compare (string StrA, string StrB, bool BoolC)

: 비교할 문자열 2개가 필요하고 bool 타입은 대소문자 무시여부이다. true는 대소문자 무시(A = a로 인식), false는 대소문자 비교, 생략시 false.
문자열 비교 값이 같을 경우 0을 반환하며 문자열 크기 비교도 가능하다. A보다 B가 크다.
조건문을 쓸때는 if (string.Compare(StrA, StrB, true) == 0) 이런 형태로 써야 한다.
간혹 if (string.Compare(StrA, StrB, true)) 이런 형태의 실수를 종종하게 된다. 물론 저도..ㅋㅋ;;

ex1) string.Compare("AA", "aa", true)

결과 : 0

ex2) string.Compare("AA", "aa", false)

결과 : 1

ex3) string.Compare("AA", "BB")

결과 : -1

 

2. CompareTo

StrA.CompareTo(StrB)

: 비교할 문자열 2개만 있으면 비교가 되며 string.Compare과의 차이점은 대소문자를 무조건 비교한다는 정도가 되겠다.
반환하는 결과도 같고, 정렬에 적합한 함수라 한다. 대소문자 구분의 필요성에 따라 분류해서 쓰는편이다.

ex1) "AAA".CompareTo("aaa")

결과 : 1

ex2) "AAA".CompareTo("AAA")

결과 : 0

ex3) "AAA".CompareTo("BBB")

결과 :

 

3. Equals , ==

StrA.Equals(StrB) 과 StrA == StrB

: 이런 형태가 실제로는 많이 쓰이고 있는걸로 알고 있다. 단순 비교일때는 저도 많이 씁니다. 이 둘은 유사해 보이나 실제로는 Equals 는 값을 비교하고, == 는 객체 참조를 비교합니다. 그래서 같은 타입끼리의 비교는 차이가 없지만 다른 타입끼리의 비교에는 차이가 생깁니다. 이 두녀석은 간단하게 이정도만 언급하겠습니다. 예문은 이해하기 편하게 숫자타입으로 했습니다.

ex1) Convert.ToInt16(0).Equals(Convert.ToInt64(0))

결과 : False

ex2) Convert.ToInt16(0) == Convert.ToInt64(0)

결과 : True

 

찾아보면 더 있을지도 모르나 이정도가 대표적일것 같습니다. Compare와 CompareTo의 차이점으로 하려다가 일반적으로는 == 를 제일 많이 쓸것도 같고해서 글이 좀 늘어나버렸고 마무리 정리가 좀 이상하긴하지만 이정도가 있다는 정도만으로 봐주시면 고맙겠습니다.