2010-08-31 15 views
48

Tengo un objeto NSString y quiero hacer una subcadena de él, localizando una palabra.Encontrar una subcadena en un objeto NSString

Por ejemplo, mi hilo es: "El perro se comió al gato", quiero que el programa ubique la palabra "comió" y haga una subcadena que será "el gato".

¿Alguien me puede ayudar o darme un ejemplo?

Gracias,

Sagiftw

Respuesta

80
NSRange range = [string rangeOfString:@"ate"]; 
NSString *substring = [[string substringFromIndex:NSMaxRange(range)] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
+4

Sé que este tema es antiguo, pero FWIW, también puedes usar rangeOfString: options: donde en las opciones usas NSCaseInsensitiveSearch si hay algún problema. Es decir, si un usuario puede ingresar una cadena en cualquier caso, y solo quiere saber si hay un patrón allí, independientemente de su caso, usaría la búsqueda de mayúsculas y minúsculas. – GTAE86

16
NSString *str = @"The dog ate the cat"; 
NSString *search = @"ate"; 
NSString *sub = [str substringFromIndex:NSMaxRange([str rangeOfString:search])]; 

Si desea recortar espacios en blanco se puede hacer eso por separado.

2
NSString *theNewString = [receivedString substringFromIndex:[receivedString rangeOfString:@"Ur String"].location]; 

Puede buscar una cadena y luego la cadena buscada en otra cadena ...

8

¿Qué hay de esta manera? Es casi lo mismo. Pero quizás el significado de NSRange sea más fácil de entender para los principiantes, si está escrito de esta manera.

En el último, que es la misma solución de jtbandes

NSString *szHaystack= @"The dog ate the cat"; 
    NSString *szNeedle= @"ate"; 
    NSRange range = [szHaystack rangeOfString:szNeedle]; 
    NSInteger idx = range.location + range.length; 
    NSString *szResult = [szHaystack substringFromIndex:idx]; 
1
-(BOOL)Contains:(NSString *)StrSearchTerm on:(NSString *)StrText 
{ 
    return [StrText rangeOfString:StrSearchTerm options:NSCaseInsensitiveSearch].location==NSNotFound?FALSE:TRUE; 
} 
3

probar este ..

BOOL isValid=[yourString containsString:@"X"]; 

Este retorno método de verdadero o falso. Si su cadena contiene este carácter, devuelve verdadero, y de lo contrario devuelve falso.

+0

Tenga en cuenta que esto funcionará solo en iOS 8.0 y superior. – Werewolf

0

Puede usar cualquiera de los dos métodos proporcionados en la clase NSString, como substringToIndex: y substringFromIndex:. Pase un NSRange como su longitud y ubicación, y obtendrá el resultado deseado.

Cuestiones relacionadas