2010-05-23 1 views
19

if 문을 사용하여 2 개의 문자열 중 첫 번째가 알파벳 순서로 표시되도록 노력하고 있습니다.문자열이 알파벳순으로 객관적으로 다른 문자열보다 큰 경우

if(@"ahello" < @"bhello") { 

아니면 모든 문자를 포함하는 문자열이 다음 각의 첫 번째 문자의 인덱스를 확인해야 할 것입니다 : 단지 문자열

if (1 < 2) { 

: 숫자와 이상과 이하의처럼 문자열과 어떤 색인이 더 큰 참조하십시오, 그리고 다른보다 작은 색인이 먼저 알파벳에 오면 그들은 다음 문자로 이동하고 반복 동일합니까?

+0

C와 마찬가지로 if 문은 문자열의 포인터가 아닌 문자열의 포인터를 비교합니다. –

+0

그것은 내가 의미했던 것의 예일뿐입니다. –

답변

36

당신이 할 수있는 것은 :

NSString *stringOne = @"abcdef"; 
NSString *stringTwo = @"defabc"; 

NSComparisonResult result = [stringOne compare:stringTwo]; 

if (result == NSOrderedAscending) // stringOne < stringTwo 
    ... 

if (result == NSOrderedDescending) // stringOne > stringTwo 
    ... 

if (result == NSOrderedSame) // stringOne == stringTwo 
    ... 

있다 (이 경우-무감각, 발음 구별 무감각 등)을 비교의 다른 종류를 수행하기위한 다른 방법도 있지만, 비교의 결과는 여전히 할 수 있습니다 위와 같이 취급한다. 문자열 비교가 직접 수행 할 수있는 다른 방법으로, 어떤 사람들은 쉽게 0 0-result 다른 언어에서 사용되는 동일한 연산자 것이다 비교하는 데 사용되는 연산자에 result을 비교 찾을 :

if (result < 0) // stringOne < stringTwo 
    ... 

if (result > 0) // stringOne > stringTwo 
    ... 

if (result == 0) // stringOne == stringTwo 
    ... 

(모든 경우 대부분의 NSString의 compare:... 메서드 중 하나는 compare:options:range:locale:에 대한 래퍼입니다. 전달할 수있는 다양한 종류의 옵션은 here입니다.

4

NSString은 원하는대로 수행 할 수있는 전체 방법이 compare:입니다. 일부는 매우 간단하고 다른 옵션은 동작을 사용자 정의하는 데 사용할 수있는 옵션이 있습니다. documentation을 확인하십시오.