回答
的NSArray
類是通用的,所以它不會包含功能來執行這一點,所以,是的,你必須自己去查每個字符串。
trojanfoe是對的。你可以用類別來增強NSArray並做類似的事情...
NSArray *array = @[ @"A", @"B", @"C" ];
__block BOOL allObjectsAreEqual = YES;
if (array.count > 1) {
NSString *firstObject = array[0];
[array enumerateObjectsUsingBlock:^void(id obj, NSUInteger idx, BOOL *stop) {
if (idx == 0) {
return;
}
if ((allObjectsAreEqual = [firstObject isEqualToString:obj]) == NO) {
*stop = YES;
}
}];
// And here check for allObjectsAreEqual ...
......有很多方法可以做到這一點。
你想檢查是否所有的字符串都相等?
@interface NSArray (MyAdditions)
- (BOOL) isFilledWithEqualObjects {
if (!self.count) return YES;
id firstObject = [self objectAtIndex:0];
for (id obj in self) {
// Avoid comparing firstObject to itself (and any other pointers to
// firstObject)
if (firstObject == obj) continue;
if (![firstObject isEqual:obj]) return NO;
}
return YES;
}
@end
該示例使用-isEqual:
來處理任何類型的對象。如果你知道的內容是字符串,您可以使用-isEqualToString:
代替:
if (![firstObject isEqualToString:obj]) return NO;
您可以通過創建從陣列中一組新的做到這一點。該集合將只包含唯一條目,因此如果集合中元素的數量是1,那麼數組中的所有項目都是相等的。
NSSet *uniqueItems = [NSSet setWithArray:yourArray];
if ([uniqueItems count] < 2) {
// All items in "yourArray" are the same (no matter how many they are)
}
在上述例子中我考慮空集(表示空數組),爲是唯一的爲好。如果你沒有,那麼你可以改變if語句來if ([uniqueItems count] == 1) { ... }
這也將適用於任何對象,而不僅僅是字符串。
有趣。這種方式代碼不多,而且對於一個小陣列或幾乎沒有獨特元素時可能會很快。但是,對於大型陣列或許多獨特元素,這需要進行大量額外比較。 – paulmelnikow 2012-07-16 15:44:18
@noa我認爲,由於OP認爲所有元素都可以相等,所以它很可能只是一些獨特的值,並且可能不超過數組中的幾百個值,在這種情況下,性能不應該是問題。 – 2012-07-16 20:43:33
- 1. 比較字符串是否相等
- 2. 如何比較字符串是否不相等?
- 3. python-字符串相等和ord()比較?
- 4. 比較字符串的長度相等
- 5. PHP比較字符串是否(幾乎)相等
- 6. 比較兩個字符串是否相等
- 7. 如何比較字符串和任何類型是否相等或很快?
- 8. 如何使用GSON比較兩個JSON字符串是否相等?
- 9. 字符串比較等效
- 10. 將字符串與NSArray比較
- 11. 如何比較兩個字符串在php中的相等性?
- 12. 整數字符串比較是相等的(PHP錯誤?)
- 13. C#字符串相等比較中StringComparison.CurrentCultureIgnoreCase的代價是多少?
- 14. 比較字符串在KSH平等
- 15. 比較字符串是否加密?
- 16. 比較字符串是否具有相同的位數
- 17. String比較null和empty是否相等
- 18. 比較兩次公差是否相等?
- 19. 比較兩個DRIVER_OBJECT是否相等?
- 20. 比較三個值是否相等
- 21. 比較uuids是否相等(在php中)
- 22. 比較兩組是否相等遞歸?
- 23. 如何比較字符串
- 24. 如何比較字符串
- 25. 如何比較字符串?
- 26. 如何比較字符串是JavaScript?
- 27. 當字符串包含標點符號時檢查字符串是否相等
- 28. 比較等於星號的字符串
- 29. 如何比較字符串與ü,ć,š等特殊字符?
- 30. 如何比較2個具有相似字符的字符串?
「==」在比較字符串時是錯誤的。應該是「isEqualToString」 – Umgre 2012-07-16 13:09:55
==檢查是爲了避免比較'firstObject'本身。比較的那一行是那個使用'-isEqual:'的那個。 – paulmelnikow 2012-07-16 15:37:27