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

Jon*_*an. 22 string objective-c alphabetical

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

if (1 < 2) {
Run Code Online (Sandbox Code Playgroud)

只是用字符串:

if(@"ahello" < @"bhello") {
Run Code Online (Sandbox Code Playgroud)

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

dre*_*lax 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
    ...
Run Code Online (Sandbox Code Playgroud)

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

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

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

if (result == 0) // stringOne == stringTwo
    ...
Run Code Online (Sandbox Code Playgroud)

compare:...NSString的大多数(如果不是全部)方法都是包装器compare:options:range:locale:.您可以在此处找到可以传递的各种选项.