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

Соответствие строк objective-c

Мне нужно сопоставить мою строку таким образом: *myString* где * означает любую подстроку. какой метод я должен использовать?

можете ли вы мне помочь?

4b9b3361

Ответ 1

Если это для iPhone OS 3.2 или новее, используйте NSRegularExpressionSearch.

NSString *regEx = [NSString stringWithFormat:@".*%@.*", yourSearchString];
NSRange range = [stringToSearch rangeOfString:regEx options:NSRegularExpressionSearch];
if (range.location != NSNotFound) {

}

Ответ 2

Вы не можете выполнять фактический поиск с использованием символа * (подстановочный знак), но обычно вы можете сделать что-то эквивалентное:

Эквивалентно поиску theTerm*:

if ([theString hasPrefix:@"theTerm"]) {

Эквивалентен поиску *theTerm:

if ([theString hasSuffix:@"theTerm"]) {

Или, используя категорию на NSString, показанную ниже, эквивалентно поиску *theTerm*:

if ([theString containsString:@"theTerm"]) {

Категория - это просто новый метод (например, функция), который мы добавляем к классу. Я написал следующее, потому что для меня обычно имеет смысл думать о одной строке, содержащей другую, вместо того, чтобы иметь дело с NSRange s.

// category on NSString
@interface NSString (MDSearchAdditions)
- (BOOL)containsString:(NSString *)aString;
@end

@implementation NSString (MDSearchAdditions)

- (BOOL)containsString:(NSString *)aString {
  return [self rangeOfString:aString].location != NSNotFound;
}

@end