23

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

if (1 < 2) {

只用字符串:

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

或者我是否必须有一个包含所有字母的字符串,然后检查每个字符串中第一个字符的索引,看看哪个索引更大,小于另一个的索引在字母表中排在第一位,然后如果它们是相等移动到下一个字符并重复?

4

2 回答 2

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比较更容易。用于与 0 比较的result运算符与其他语言中使用的运算符相同,可以直接进行字符串比较:

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

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

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

compare:...NSString 的大多数(如果不是全部)方法都是compare:options:range:locale:. 可以在这里找到您可以传递的不同类型的选项。

于 2010-05-23T21:04:27.807 回答
4

NSString 有一大堆compare:方法可以做你想做的事。有些非常简单,有些则有很多选项可用于自定义行为。查看文档

于 2010-05-23T17:47:33.523 回答