iOS:有没有办法检查NSArray对象是否包含某个字符?

use*_*054 6 if-statement objective-c nsarray ios

我需要一种方法来知道数组中的一个字符串对象中是否包含字符"@".以下代码显然不起作用,因为它检查对象是否只有@符号而不是检查对象是否包含@符号.例如,如果用户有test@test.com,我的if语句将不会检测到它.我需要查看用户是否有电子邮件.我尝试研究如何在stackoverflow上实现这一点,但没有运气.任何提示或建议将不胜感激.

if([answer containsObject:@"@"]){
  /// do function.                 
}
Run Code Online (Sandbox Code Playgroud)

dan*_*anh 8

您可以检查NSArray是否包含对象containsObject.如果它是一个表示为单字符字符串的字符数组,那么代码很简单:

NSArray *array = @[@"a", @"b", @"c", @"d"];
BOOL contains = [array containsObject:@"c"];
Run Code Online (Sandbox Code Playgroud)

由于NS集合只包含对象,所以没有像'c'char那样的标量类型的NSArray.最接近一组字符的是a NSString,它有多种方法可以告诉你字符是否存在.最简单的看起来像这样:

NSString *string = @"test@test.com";
NSRange range = [string rangeOfString:@"c"];
BOOL contains = range.location != NSNotFound;
Run Code Online (Sandbox Code Playgroud)


kra*_*vil 6

您必须遍历数组中的每个NSString并检查它是否包含子字符串.

此自定义方法显示如何:

//assumes all objects in the array are NSStrings
- (BOOL)array:(NSArray *)array containsSubstring:(NSString *)substring {

    BOOL containsSubstring = NO;

    for (NSString *string in array) {

        if ([string rangeOfString:substring].location != NSNotFound) {
            containsSubstring = YES;
            break;
        }
    }
    return containsSubstring;
}
Run Code Online (Sandbox Code Playgroud)

用法:

NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:3];
[array addObject:@"hi"];
[array addObject:@"yo"];
[array addObject:@"test@test.com"];

BOOL containsSubstring = [self array:array containsSubstring:@"@"];
Run Code Online (Sandbox Code Playgroud)