Проверка, содержит ли NSString символы из другой строки NSString - PullRequest
1 голос
/ 23 апреля 2011

Я ищу способ сравнить две строки и посмотреть, содержит ли вторая строка символ (буква, число, другое), перечисленные в первой, позвольте мне объяснить:

Например: представьте парольдопускаются только цифры и «*»: ссылочная цепочка (1): «* 0123456789» NSString формат, без NSArray рабочая цепочка (2) = «156/15615 = 211» NSString формат,

Как мне узнать, что моя цепочка 2 содержит 2 символа (/ =), которых нет в моей цепочке 1?

Чтобы упростить допустимые буквы управления, я не хочу использовать NSArray для управлениянапример цепочка вызова функции:

BOOL unauthorized_letter_found = check(work_chain, reference_chain);

Вы должны пройти через "for", NSPredicate и т. д.?

PS: я на MAC OS, а не iOSпоэтому я не могу использовать NSRegularExpression.

Ответы [ 2 ]

9 голосов
/ 23 апреля 2011

Вы можете использовать наборы символов, например, используя -rangeOfCharacterFromSet:, чтобы проверить наличие запрещенных символов:

NSCharacterSet *notAllowed = [[NSCharacterSet 
    characterSetWithCharactersInString:@"*0123456789"] invertedSet];
NSRange range = [inputString rangeOfCharacterFromSet:notAllowed];
BOOL unauthorized = (range.location != NSNotFound);
5 голосов
/ 23 апреля 2011

Если вы хотите использовать NSPredicate, вы можете сделать:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES '[0-9*]+'"];
if ([predicate evaluateWithObject:@"0*2481347*"]) {
  NSLog(@"passes!");
} else {
  NSLog(@"fails!");
}

Это использует встроенные в NSPredicate средства сопоставления регулярных выражений.:)

...