Reputation: 9234
My question is similar to How do I check if a string contains another string in Objective-C?
How can I check if a string (NSString) contains another smaller string but with ignoring case?
NSString *string = @"hello bla bla";
I was hoping for something like:
NSLog(@"%d",[string containsSubstring:@"BLA"]);
Anyway is there any way to find if a string contains another string with ignore case ? But please do not convert both strings to UpperCase or to LowerCase.
Upvotes: 34
Views: 19150
Reputation: 5467
For Swift 4:
extension String {
func containsCaseInsensitive(string : String) -> Bool {
return self.localizedCaseInsensitiveContains(string)
}
}
Usage:
print("Hello".containsCaseInsensitive(string: "LLO"))
Output:
true
Upvotes: 0
Reputation: 17478
As similar to the answer provided in the link, but use options
.
See - (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask
in Apple doc
NSString *string = @"hello bla bla";
if ([string rangeOfString:@"BLA" options:NSCaseInsensitiveSearch].location == NSNotFound)
{
NSLog(@"string does not contain bla");
}
else
{
NSLog(@"string contains bla!");
}
Upvotes: 87
Reputation: 2298
From iOS 8 you can add the containsString:
or localizedCaseInsensitiveContainsString
method to NSString.
if ([string localizedCaseInsensitiveContainsString:@"BlA"]) {
NSLog(@"string contains Case Insensitive bla!");
} else {
NSLog(@"string does not contain bla");
}
Upvotes: 17
Reputation:
You can use -(NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask;
to get a range for a substring, the mask
parameter is used to specify case insensitive match.
Example :
NSRange r = [str rangeOfString:@"BLA"
options:NSCaseInsensitiveSearch];
As stated in the documentation, the method returns a range like {NSNotFound, 0}
when the substring isn't found.
BOOL b = r.location == NSNotFound;
Important this method raises an exception if the string is nil
.
Upvotes: 0
Reputation: 39988
NSString *string = @"hello BLA";
if ([string rangeOfString:@"bla" options:NSCaseInsensitiveSearch].location == NSNotFound) {
NSLog(@"string does not contain bla");
} else {
NSLog(@"string contains bla!");
}
Upvotes: 3
Reputation: 2019
The method
[string rangeOfString:@"bla" options:NSCaseInsensitiveSearch];
should help you.
Upvotes: 0