如果字符串按字母顺序大于目标中的其他字符串

时间:2010-05-23 17:44:57

标签: objective-c string alphabetical

我正在尝试使用if语句来计算出2个字符串中的哪一个按字母顺序排在第一位。与数字一样,大于且小于:

if (1 < 2) {

只是字符串:

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

或者我必须有一个包含所有字母的字符串,然后检查每个字符串中第一个字符的索引,看看哪个索引更大,并且小于另一个的索引首先出现在字母表中然后如果它们相等则转到下一个字符并重复?

2 个答案:

答案 0 :(得分:39)

你能做的是:

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
    ...

还有其他方法可以执行不同类型的比较(例如不区分大小写,变音符号不敏感等),但比较的结果仍然可以像上面那样对待。或者,有些人发现将result与0进行比较更容易。用于将result与0进行比较的运算符与其他语言中使用的运算符相同,可以直接进行字符串比较:

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

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

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

NSString的大多数(如果不是全部)compare:...方法都是compare:options:range:locale:的包装器。您可以找到不同类型的选项here

答案 1 :(得分:4)

NSString有一大堆compare:方法可以满足您的需求。有些非常简单,有些则可以使用一些选项来自定义行为。查看documentation