Estoy haciendo una aplicación de iOS y necesito averiguar si un NSString
contiene alguno de los NSStrings
en un NSArray
.¿Cómo comprobar si un NSString contiene uno de los NSStrings en un NSArray?
Respuesta
BOOL found=NO;
for (NSString *s in arrayOfStrings)
{
if ([stringToSearchWithin rangeOfString:s].location != NSNotFound) {
found = YES;
break;
}
}
puede ser un tonto para su optimización caso de uso, pero dependiendo del tamaño de la matriz es que usted está iterando, puede ser útil/con más prestaciones para usar NSArray's
indexOfObjectWithOptions:passingTest:
método.
Con este método, pasa algunas opciones y un bloque que contiene su prueba. Al pasar la opción NSEnumerationConcurrent
, la evaluación de su bloque se puede realizar en varios subprocesos al mismo tiempo y puede acelerar las cosas. Reutilicé la prueba de invariante, pero de una manera ligeramente diferente. El bloque devuelve funcionalmente un BOOL similar a la variable "found" en la implementación del invariante. El "* stop = SÍ;" La línea indica que la iteración debe detenerse.
Consulte la documentación de referencia de NSArray para obtener más información. Reference
NSArray *arrayOfStrings = ...;
NSString *stringToSearchWithin = ...";
NSUInteger index = [arrayOfStrings indexOfObjectWithOptions:NSEnumerationConcurrent
passingTest:^(id obj, NSUInteger idx, BOOL *stop)
{
NSString *s = (NSString *)obj;
if ([stringToSearchWithin rangeOfString:s].location != NSNotFound) {
*stop = YES;
return YES;
}
return NO;
}];
if (arrayOfStrings == nil || index == NSNotFound)
{
NSLog(@"The string does not contain any of the strings from the arrayOfStrings");
return;
}
NSLog(@"The string contains '%@' from the arrayOfStrings", [arrayOfStrings objectAtIndex:index]);
Gracias Adam! ¡Pieza de código muy útil, funciona maravillosamente! – FreeAppl3
muy pequeña mejora la seguridad en la respuesta de Adán: hay un gran problema con "objectAtIndex:" porque no es totalmente seguro para subprocesos y hará que su aplicación accidente con demasiada frecuencia. Así que hago:
NSArray *arrayOfStrings = ...;
NSString *stringToSearchWithin = ...";
__block NSString *result = nil;
[arrayOfStrings indexOfObjectWithOptions:NSEnumerationConcurrent
passingTest:^(NSString *obj, NSUInteger idx, BOOL *stop)
{
if ([stringToSearchWithin rangeOfString:obj].location != NSNotFound)
{
result = obj;
*stop = YES;
//return YES;
}
return NO;
}];
if (!result)
NSLog(@"The string does not contain any of the strings from the arrayOfStrings");
else
NSLog(@"The string contains '%@' from the arrayOfStrings", result);
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", theArray];
BOOL result = [predicate evaluateWithObject:theString];
Al igual que con la liberación de iOS8, Apple ha añadido un nuevo método para NSString
llamada localizedCaseInsensitiveContainsString
. Esto hará exactamente lo que quiera más fácil:
BOOL found = NO;
NSString *string = @"ToSearchFor";
for (NSString *s in arrayOfStrings){
if ([string localizedCaseInsensitiveContainsString:s]) {
found = YES;
break;
}
}
- 1. Cómo unir elementos NSArray en un NSString?
- 2. ¿Detecta si un NSString contiene ...?
- 3. ¿Cómo comprobar si un NSArray contiene un objeto de una clase en particular?
- 4. ¿Cómo puedo verificar si un NSString particular está presente en un NSArray?
- 5. Comprobar si NSString contiene alfanumérico + guiones bajos solamente
- 6. ¿Cómo comprobar si existe un directorio que contiene un archivo?
- 7. cómo comprobar si NSString = un valor de cadena específico?
- 8. ios comprobar si NSArray == null
- 9. Cómo comprobar si un int var contiene un número específico
- 10. Cómo comprobar si NSString comienza con un cierto carácter
- 11. comprobar si un std :: vector contiene un determinado objeto?
- 12. ¿Cómo comprobar en MATLAB si un vector solo contiene ceros?
- 13. ¿Cómo comprobar si una tabla contiene un elemento en Lua?
- 14. Comprobar NSString contiene letras y números
- 15. Cómo convertir NSArray en NSString
- 16. ¿Cómo comprobar si un parámetro contiene dos subcadenas utilizando Mockito?
- 17. Android: ¿Cómo comprobar si una ruta contiene un punto tocado?
- 18. Javascript: Comprobar si la página contiene un div en particular
- 19. NSPredicar comprobar NSArray si el objeto tiene uno de varios ID
- 20. NSArray y NSString
- 21. NSString a NSArray
- 22. ¿Cómo comprobar que NSString contiene el '%' o no?
- 23. cómo comprobar si la cadena contiene carácter '+'
- 24. Determine si el primer carácter de NSString es un número
- 25. ¿Cómo encontrar un personaje específico está presente en un NSString o no?
- 26. NSArray independiente a una lista de objetos de tipo NSString
- 27. formas de comprobar si un ArrayList contiene sólo valores nulos
- 28. Comprobar si una Lista ya contiene un elemento o no?
- 29. Xcode divide NSString a otros NSStrings
- 30. Usando StreamReader para comprobar si un archivo contiene una cadena
Eso funcionó. ¡Gracias! – Josh