/ / verifica se uma string grande contém outra usando NSPredicate ou expressão regular - ios, nspredicate

verifique se uma string grande contém outra string usando NSPredicate ou expressão regular - ios, nspredicate

NSString *string = @"A long term stackoverflow.html";
NSString *expression = @"stack(.*).html";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", expression];

BOOL match = [predicate evaluateWithObject:string]
if(match){
NSLog(@"found");
} else {
NSLog(@"not found");
}

Como posso pesquisar se a expressão está presente na string ou não. o código acima está funcionando para uma palavra. mas não se eu colocar mais algumas palavras na string a ser pesquisada

Respostas:

1 para resposta № 1

Se você deseja verificar uma string com um valor regex, use NSRegularExpression não NSPredicate.

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"stack(.*).html" options:0 error:nil];

Depois, você pode usar as funções para encontrar correspondências ...

NSString *string = @"stackoverflow.html";

NSUInteger matchCount = [regex numberOfMatchesInString:string options:0 range:NSMakeRange(0, string.length)];

NSLog(@"Number of matches = %d", matchCount);

Nota: Eu sou péssimo em criar padrões regex, então acabei de usar seu padrão e exemplo. Não tenho idéia se o padrão realmente encontrará uma correspondência nessa string, mas se houver uma correspondência, ela funcionará.


1 para resposta № 2

NSPredicate corresponde apenas a cadeias completas, portanto, você deve alterar seu padrão para cobrir toda a cadeia:

NSString    *expression = @".*stack(.*).html.*";

No entanto, seu padrão original também corresponderá a algo como "empilhar meus arquivos em html", portanto, você pode ler sobre seus padrões de expressão regular.


-1 para resposta № 3

Melhore sua pergunta, mas veja a resposta abaixo para sua pergunta

 NSString *string = @"This is the main stringsss which needs to be searched for some text the texts can be any big. let us see";
if ([string rangeOfString:@"."].location == NSNotFound) {
NSLog(@"string does not contains");
} else {
NSLog(@"string contains !");
}