Соответствие строки target-c - PullRequest
       3

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

12 голосов
/ 21 декабря 2010

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

не могли бы вы мне помочь, пожалуйста?

Ответы [ 3 ]

24 голосов
/ 21 декабря 2010

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

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

}
11 голосов
/ 21 декабря 2010

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

Эквивалентно поиску 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
0 голосов
/ 27 февраля 2014

Если вам нужно что-то более развитое, попробуйте https://github.com/dblock/objc-ngram.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...