2012-03-15 25 views
0

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

感谢您的帮助。

+0

你想要做一个时间排序或排序,而插入? – ThomasW 2012-03-15 04:16:47

+0

另一个问题是你不能插入到'NSArray'中,你需要一个'NSMutableArray'。 – ThomasW 2012-03-15 04:20:36

+0

好点,谢谢。 – Jonathan 2012-03-15 05:05:56

回答

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

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

+0

这只是我知道的唯一字符串比较函数。唯一的问题是我需要知道哪个字符串在不相等的情况下更大。 – Jonathan 2012-03-15 04:13:06

+0

哪个字符串是**更大**?你的意思是什么? – Raptor 2012-03-16 01:21:35

1

尝试NSArraysortedArrayUsingSelector:方法:

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

输出地说:

(
    aada, 
    bbb, 
    dddsss 
) 

更重要的是,你可以使用NSSortDescriptor决定ASC或DESC顺序。

2

如果你看看"Identifying and comparing strings" in the NSString reference下,你会发现几个选项。它们做的事情稍有不同,因为你可能想用不同的方式来比较字符串(例如,用词法或数字顺序比较数字)?最基本的是compare: - 你可以从那里开始,根据需要选择更复杂的版本。

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,那么你可以说字符串是相同否则他们是不同的。

SOLUTION-2:另外你不觉得这很容易,你可以参考Macmade的回答同一链接下。

希望这可以帮助你。

2

对于排序阵列

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