繁体   English   中英

在Objective-C中比较字符串

[英]Comparing Strings in Objective-C

我正在为iPhone编写一个小型应用程序,并且试图编写一个函数,该函数将按字母顺序将NSMutableString插入NSArray中。 另外,我还将编写一种排序以对整个数组进行排序。 对于这两种情况,我都想知道比较NSMutableStrings的最佳方法是什么。 我可以使用特定功能吗?

谢谢你的帮助。

我想你在找

(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

如果您在NSString参考中的“识别和比较字符串”下查看,将会找到几个选项。 它们做的事情略有不同,因为您可能想以不同的方式比较字符串(例如,数字是按词汇顺序还是按数字顺序进行比较?)。 最基本的是compare: —您可以从那里开始,然后根据需要选择一个更复杂的版本。

我认为这应该为您工作。 这是我从链接中得到的答案:

比较UITextView中的文本?

解决方案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的答案

希望这对您有所帮助。

用于排序数组

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

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

试试NSArraysortedArrayUsingSelector:方法:

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

输出:

(
  aada,
  bbb,
  dddsss
)

此外,您可以使用NSSortDescriptor来确定ASC或DESC顺序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM