Iphone 如何检查NSString是否为特定的字符串值?
您好,我很抱歉,如果您可以检查NSString是否等于一个特定值,例如一个人的名字 我的思路是Iphone 如何检查NSString是否为特定的字符串值?,iphone,ios,nsstring,Iphone,Ios,Nsstring,您好,我很抱歉,如果您可以检查NSString是否等于一个特定值,例如一个人的名字 我的思路是 if (mystring == @"Johns"){ //do some stuff in here } 以下是您在某些情况下可能希望使用的另一种方法: NSArray * validNames = @[ @"foo" , @"bar" , @"bob" ]; if ([validNames indexOfObject:myString].location != NSNotFound)
if (mystring == @"Johns"){
//do some stuff in here
}
以下是您在某些情况下可能希望使用的另一种方法:
NSArray * validNames = @[ @"foo" , @"bar" , @"bob" ];
if ([validNames indexOfObject:myString].location != NSNotFound)
{
// The myString is one of the names in the valid names array
}
或者,如果数组中有大量名称,则可以使用,因为查找对象的速度比在数组中快((O(logn)
vsO(N)
)
这些方法之所以有效,是因为
NSSet
和NSArray
使用了将调用NSString
实例的方法。什么时候要使用location
方法,而不是使用isEqualToString
方法的for循环?@Pavan使用indexOfObject
比for循环更容易一些(代码行数较少)。除此之外,差别不大。对于大型集合,NSSet方法可能比在数组中循环更快,但在大多数情况下,它并不重要。
NSArray * validNames = @[ @"foo" , @"bar" , @"bob" ];
if ([validNames indexOfObject:myString].location != NSNotFound)
{
// The myString is one of the names in the valid names array
}
NSSet * validNamesSet = [NSSet setWithArray:validNames];
if ([validNamesSet containsObject:myString])
{
// This is faster than indexOfObject for large sets
}