我正在为iphone编写一个小应用程序,我试图编写一个函数,它将按字母顺序将NSMutableString插入到NSArray中。另外,我将编写一个排序整个数组的排序。对于这两种情况,我想知道比较NSMutableStrings的最佳方法是什么。有我可以使用的特定功能吗?在Objective-C中比较字符串
感谢您的帮助。
我正在为iphone编写一个小应用程序,我试图编写一个函数,它将按字母顺序将NSMutableString插入到NSArray中。另外,我将编写一个排序整个数组的排序。对于这两种情况,我想知道比较NSMutableStrings的最佳方法是什么。有我可以使用的特定功能吗?在Objective-C中比较字符串
感谢您的帮助。
我认为你正在寻找
(NSComparisonResult)[aString compare: bString];
如果你正在做插入排序您可以使用此或相关的方法之一。但是,如果您想要对NSMutableArray进行一次排序,则可以使用其中一种NSMutableArray排序方法,例如sortUsingComparator:
。
尝试NSArray
的sortedArrayUsingSelector:
方法:
NSArray * stringArray = [NSArray arrayWithObjects:@"dddsss", @"aada", @"bbb", nil];
[stringArray sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@", [stringArray sortedArrayUsingSelector:@selector(compare:)]);
输出地说:
(
aada,
bbb,
dddsss
)
更重要的是,你可以使用NSSortDescriptor
决定ASC或DESC顺序。
如果你看看"Identifying and comparing strings" in the NSString reference下,你会发现几个选项。它们做的事情稍有不同,因为你可能想用不同的方式来比较字符串(例如,用词法或数字顺序比较数字)?最基本的是compare:
- 你可以从那里开始,根据需要选择更复杂的版本。
我认为这应该适合你。这就是我的答案,我从链接采取:
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的回答同一链接下。
希望这可以帮助你。
对于排序阵列
NSArray *sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
你想要做一个时间排序或排序,而插入? – ThomasW 2012-03-15 04:16:47
另一个问题是你不能插入到'NSArray'中,你需要一个'NSMutableArray'。 – ThomasW 2012-03-15 04:20:36
好点,谢谢。 – Jonathan 2012-03-15 05:05:56