比较Objective-C中的字符串

时间:2012-03-15 04:07:35

标签: iphone objective-c

我正在为iphone编写一个小应用程序,我正在尝试编写一个函数,它将按字母顺序将NSMutableString插入NSArray。此外,我还将编写一个排序来整理整个数组。对于这两种情况,我想知道比较NSMutableStrings的最佳方法是什么。我可以使用特定的功能吗?

感谢您的帮助。

6 个答案:

答案 0 :(得分:4)

我认为你正在寻找

(NSComparisonResult)[aString compare: bString];

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/nsstring_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/compare

如果您正在进行插入排序,则可以使用此方法或其中一种相关方法。但是,如果要对NSMutableArray进行一次性排序,则可以使用NSMutableArray排序方法之一,例如sortUsingComparator:

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSMutableArray_Class/Reference/Reference.html#//apple_ref/occ/instm/NSMutableArray/sortUsingComparator

答案 1 :(得分:2)

如果你看"Identifying and comparing strings" in the NSString reference下,你会发现几个选项。它们的功能略有不同,因为您可能希望以不同的方式比较字符串(例如,数字是按词汇顺序还是按数字顺序进行比较?)。最基本的是compare: - 您可以从那里开始并根据需要选择更复杂的版本。

答案 2 :(得分:2)

我认为这对你有用。这是我从链接中得到的答案:

Comparing text in UITextView?

SOLUTION-1:我稍后对其进行了修改,以使您的案例更加轻松:

让我们假设String1是一个NSString。

 //Though this is a case sensitive comparison of string
 BOOL boolVal = [String1 isEqualToString:@"My Default Text"];

 //Here is how you can do case insensitive comparison of string:
 NSComparisonResult boolVal = [String1 compare:@"My Default Text" options:NSCaseInsensitiveSearch]; 

 if(boolVal == NSOrderedSame)
 {
     NSLog(@"Strings are same");
 }
 else
 {
     NSLog(@"Strings are Different");
 }
  

如果boolVal是NSOrderedSame,那么你可以说字符串是相同的,否则它们是不同的。

解决方案-2:您也不会觉得这很简单,您可以在同一链接下参考 Macmade的回答

希望这会对你有所帮助。

答案 3 :(得分:2)

用于排序数组

NSArray *sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

答案 4 :(得分:1)

尝试BOOL ans = [str1 isEqualToString:str2];

答案 5 :(得分:1)

尝试NSArray的{​​{1}}方法:

sortedArrayUsingSelector:

Out put:

NSArray * stringArray = [NSArray arrayWithObjects:@"dddsss", @"aada", @"bbb", nil];
[stringArray sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@", [stringArray sortedArrayUsingSelector:@selector(compare:)]);

此外,您可以使用( aada, bbb, dddsss ) 来决定ASC或DESC顺序。