NSPredicate для NSString с пользовательским форматом - PullRequest
0 голосов
/ 10 ноября 2010

Я бы хотел использовать NSPredicate для соответствия NSString, но у меня возникли проблемы с началом работы.Моя цель - сопоставить определенные строки NSS, которые содержат форматы.

  1. be ---
  2. be-tt
  3. ----- g

Если у кого-то есть простые примеры, которые будут высоко оценены.

Ответы [ 2 ]

3 голосов
/ 10 ноября 2010

Вы можете создать NSPredicate с +predicateWithBlock: с вашим собственным кодом сравнения.

ИЛИ используя регулярное выражение (возможно, лучшее решение):

[NSPredicate predicateWithFormat:@"SELF MATCHES '(be...)|(be.tt)|(.....g)'"]
2 голосов
/ 10 ноября 2010

Простой способ сделать это - использовать оператор LIKE.С этим строковым оператором вы можете использовать специальные символы * и ?.* означает «0 или более символов», а ? означает «ровно один символ».Таким образом, вы можете сделать:

NSPredicate * p = [NSPredicate predicateWithFormat:@"SELF LIKE %@ OR SELF LIKE %@ OR SELF LIKE %@", @"be???", @"be?tt", @"?????g"];
NSLog(@"%d", [p evaluateWithObject:@"beast"]); //logs "1"

(@ benoît хорошо отмечает в своем ответе, что это также может быть достигнуто с помощью регулярного выражения [оператор MATCHES], которое может сократить длинустрока формата предиката)

...