Подтвердить что ты не робот

IPhone: найдите одну строку в другой с регистрацией регистра

Мой вопрос похож на Как проверить, содержит ли строка другую строку в Objective-C?

Как проверить, содержит ли строка (NSString) другую меньшую строку, но игнорируя случай?

NSString *string = @"hello bla bla";

Я надеялся на что-то вроде:

NSLog(@"%d",[string containsSubstring:@"BLA"]);

В любом случае есть ли способ найти, содержит ли строка другую строку с игнорированием case? Но, пожалуйста, не конвертируйте обе строки в UpperCase или в LowerCase.

4b9b3361

Ответ 1

Как и в ответе, указанном в ссылке, используйте options.

См. - (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask в 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!");
}

Ответ 2

Из iOS 8 вы можете добавить метод containsString: или localizedCaseInsensitiveContainsString в NSString.

if ([string localizedCaseInsensitiveContainsString:@"BlA"]) {
    NSLog(@"string contains Case Insensitive bla!");
} else {
    NSLog(@"string does not contain bla");
}

Ответ 3

NSString *string = @"hello BLA";
if ([string rangeOfString:@"bla" options:NSCaseInsensitiveSearch].location == NSNotFound) {
    NSLog(@"string does not contain bla");
} else {
    NSLog(@"string contains bla!");
}

Ответ 4

Метод

[string rangeOfString:@"bla" options:NSCaseInsensitiveSearch];

должен помочь вам.

Ответ 5

Вы можете использовать -(NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask; для получения диапазона для подстроки, параметр mask используется для указания нечувствительности к регистру.

Пример:

NSRange r = [str rangeOfString:@"BLA"
                       options:NSCaseInsensitiveSearch];

Как указано в documentation, метод возвращает диапазон, например {NSNotFound, 0}, когда подстрока не найдена.

BOOL b = r.location == NSNotFound;

Важный этот метод вызывает исключение, если строка nil.