我正在尝试使用 if 语句来确定两个字符串中哪一个按字母顺序排列在前。就像数字的大小比较一样:
if (1 < 2) {
仅使用字符串:
if(@"ahello" < @"bhello") {
或者我是否需要拥有一个包含所有字母的字符串,然后检查每个字符串中第一个字符的索引,并查看哪个索引更大,较小的索引在字母表中排在前面,如果它们相等,则移动到下一个字符并重复?
我正在尝试使用 if 语句来确定两个字符串中哪一个按字母顺序排列在前。就像数字的大小比较一样:
if (1 < 2) {
仅使用字符串:
if(@"ahello" < @"bhello") {
或者我是否需要拥有一个包含所有字母的字符串,然后检查每个字符串中第一个字符的索引,并查看哪个索引更大,较小的索引在字母表中排在前面,如果它们相等,则移动到下一个字符并重复?
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:
的包装器。您可以传递的不同选项类型可以在这里找到。