How do I check if a string contains another string in Objective-C?

前端 未结 23 2086

How can I check if a string (NSString) contains another smaller string?

I was hoping for something like:

NSString *string = @\"hello bla         


        
23条回答
  •  感动是毒
    2020-11-22 14:59

    An improved version of P i's solution, a category on NSString, that not only will tell, if a string is found within another string, but also takes a range by reference, is:

    @interface NSString (Contains)
    -(BOOL)containsString: (NSString*)substring
                  atRange:(NSRange*)range;
    
    -(BOOL)containsString:(NSString *)substring;
    @end
    
    @implementation NSString (Contains)
    
    -(BOOL)containsString:(NSString *)substring
                  atRange:(NSRange *)range{
    
        NSRange r = [self rangeOfString : substring];
        BOOL found = ( r.location != NSNotFound );
        if (range != NULL) *range = r;
        return found;
    }
    
    -(BOOL)containsString:(NSString *)substring
    {
        return [self containsString:substring
                            atRange:NULL];
    }
    
    @end
    

    Use it like:

    NSString *string = @"Hello, World!";
    
    //If you only want to ensure a string contains a certain substring
    if ([string containsString:@"ello" atRange:NULL]) {
        NSLog(@"YES");
    }
    
    // Or simply
    if ([string containsString:@"ello"]) {
        NSLog(@"YES");
    }
    
    //If you also want to know substring's range
    NSRange range;
    if ([string containsString:@"ello" atRange:&range]) {
        NSLog(@"%@", NSStringFromRange(range));
    }
    

提交回复
热议问题