一组电子邮件不区分大小写的搜索

时间:2013-10-14 11:05:15

标签: ios iphone objective-c search

我有一个字符串数组,字符串在意义上的电子邮件ID ...所以我需要检查数组是否包含我给的电子邮件ID ....还需要检查不区分大小写....目前我正在使用以下代码

 if ([arrayAllEmail containsObject:email])
{
// do some stuff here...
}

问题是假设arraAllEmail包含Abc@gmail.com ....但是我给(email = abc@gmail.com)abc@gmail.com用于检查目的,它将返回“否”结果......这就是为什么我需要不区分大小写的搜索机制....所以任何人都知道如何解决这个问题请给我答案..

4 个答案:

答案 0 :(得分:5)

两种不同的方法可以解决这个问题:

  • 在将字符串放入数组之前,将字符串转换为相同的大小写(上面或下面,您决定)。在搜索字符串上执行相同操作以确保结果不区分大小写,或
  • 使用indexOfObjectPassingTest:方法,并在测试块中放置不区分大小写的比较。

以下是如何实施第二种方法:

if ([arrayAllEmail indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
    return [email caseInsensitiveCompare:obj] == NSOrderedSame;
}] != NSNotFound) {
    // do some stuff here...
}

答案 1 :(得分:2)

这是一种方法:

-(bool) array: (NSArray*) anArray containsAddress: (NSString*) emailAddresss
{
    return [array indexOfObjectPassingTest: ^(id obj, NSUInteger idx, BOOL *stop)
               {
                   return [obj caseInsensitiveCompare: emailAddress] == NSOrderedSame;
               }
           ] != NSNotFound;
}

答案 2 :(得分:1)

if( [@"Some String" caseInsensitiveCompare:@"some string"] == NSOrderedSame ) {
    // strings are equal except for possibly case
}

在这里,您可以使用objectindex传递搜索词和其他数组。

如果您需要任何进一步的帮助,请告诉我。 :)

答案 3 :(得分:1)

以下面的方式试试

   for(NSString *str in arrayAllEmail)
{
     if([str uppercaseString]     
      isEqualToString:[email uppercaseString]]
       // strings are equal except for possibly case
       }
}