0

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

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

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

4

4 回答 4

5

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

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

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

if ([arrayAllEmail indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
    return [email caseInsensitiveCompare:obj] == NSOrderedSame;
}] != NSNotFound) {
    // do some stuff here...
}
于 2013-10-14T11:11:32.240 回答
2

这是一种方法:

-(bool) array: (NSArray*) anArray containsAddress: (NSString*) emailAddresss
{
    return [array indexOfObjectPassingTest: ^(id obj, NSUInteger idx, BOOL *stop)
               {
                   return [obj caseInsensitiveCompare: emailAddress] == NSOrderedSame;
               }
           ] != NSNotFound;
}
于 2013-10-14T11:23:58.100 回答
1
if( [@"Some String" caseInsensitiveCompare:@"some string"] == NSOrderedSame ) {
    // strings are equal except for possibly case
}

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

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

于 2013-10-14T11:08:50.847 回答
1

试试下面的简单方法

   for(NSString *str in arrayAllEmail)
{
     if([str uppercaseString]     
      isEqualToString:[email uppercaseString]]
       // strings are equal except for possibly case
       }
}
于 2013-10-14T11:42:29.037 回答