2012-04-27 20 views
6

Estoy al tanto de reemplazar Strings of a String, pero eso solo funciona si sé exactamente lo que quiero eliminar.Eliminar caracteres y todo después de la cadena

Si tengo una cadena como la siguiente:

"característica de alta no-this-is-a-prueba & = hi-ahí"

¿Cómo se quita '& función' y todo eso viene después de eso?

Cualquier ayuda sería muy apreciada. ¡Gracias por adelantado!

EDITAR: Si es absolutamente necesario usar REGEX, ¿podría alguien mostrarme cómo usarlo? Soy consciente de que es 10.7 en adelante, pero estoy de acuerdo con eso. Mejor aún, ¿un ejemplo de recorte de cadenas o uso del NSScanner?

Gracias de nuevo a todos.

EDITAR: La solución publicada a continuación es la correcta, pero resultó en un bloqueo para mí. Así es como resolví el problema:

NSString *newString = [[oldString componentsSeparatedByString: @"&feature="] objectAtIndex:0]; 
+0

Aunque técnicamente es una solución, esta solución hace más trabajo de lo necesario (es decir, se crea una matriz). Debería volver a la solución de rdelmar e investigar qué estaba haciendo que causó su bloqueo, porque probablemente aún lo esté haciendo y causará otros problemas. –

+0

Muchas gracias por su ayuda, pero créanme, he echado un buen vistazo y acabo de crear una cadena, rellenarla con una URL, convertirla, recortarla y luego utilizar esta solución. Estoy fuera de mi alcance tratando de descubrir por qué se bloquea. – Cristian

+1

Como dije, debe hacer una pregunta al respecto. No puede aprender nada útil al salir de cada choque que encuentre; cuando se produce un choque, debe abordarlo de frente y aprender de lo que encuentre. –

Respuesta

20

Se puede hacer sin Regex así:

NSString *string = @"hi-there-this-is-a-test&feature=hi-there"; 
    NSRange range = [string rangeOfString:@"&feature"]; 
    NSString *shortString = [string substringToIndex:range.location]; 
+0

esto da como resultado un bloqueo:/ – Cristian

+0

No lo hace cuando lo ejecuto. Aparece un mensaje de error – rdelmar

+0

@ Christian: Entonces estás haciendo algo diferente. Esta es la solución correcta. Debería publicar una pregunta por separado sobre el bloqueo. –

1

Buscar patrones de coincidencia, también conocidos como expresiones regulares.

Oh, wow, TIL no hay una forma incorporada de hacer expresiones regulares en un Objective-C Cocoa? de acuerdo con Regular expressions in an Objective-C Cocoa application

De todos modos, hay libs mencionados en esa pregunta.

+0

¿no hay una forma incorporada? como 'stringByReplacingOccurrencesOfString() pero eliminar todo después? – Cristian

+0

Bueno, podría codificarlo con su propia función que realiza una llamada incorporada para obtener la posición de la cadena coincidente, y luego recortar la cadena en ese punto. Y si tienes un entorno lo suficientemente simple, entonces estaría bien. Pero una vez que tu proyecto crezca, estarás cortando y pegando ese código compartido ... ¿por qué no usar una lib robusta? – MarkHu

+0

Es un proyecto pequeño, y este código se incluiría en una función de bucle, y solo hay una ocurrencia específica que necesito eliminar, que es eliminar '& feature' y todo después, esto no cambiará. ¡Si pudieras dar un ejemplo de cómo encontrar eso y recortarlo, estaría muy agradecido! – Cristian

Cuestiones relacionadas