2011-03-14 22 views

Respuesta

246
mystr=[mystr substringToIndex:3]; 

Asegúrese de que su cadena tiene al menos 3 ch .. O.E. se bloqueará la aplicación.

Aquí están algunos otros enlaces para evaluar las operaciones NSsting ...

Link1

Link2

Apple Link

+20

nota: "Rango o índice fuera de límites" error posible si no verifica la longitud para asegurarse de que tiene 3 o más caracteres de largo –

+0

Soy muy nuevo y busqué esta pregunta para tratar de responder mi propia, pero ¿esta respuesta no sacará los primeros 3 caracteres? Uso la misma sintaxis para ELIMINAR la cantidad de caracteres que estableces. Probablemente estoy equivocado, pero pensé que al menos debería preguntar. –

+0

@RyanBavetta ¿Qué sucede si la cadena con la que está haciendo esto es, por ejemplo, una cadena de fecha que su código preparó y para saber EXACTAMENTE cuántos caracteres tiene? Entonces seguramente no necesita molestarse con una declaración if para verificar cuánto tiempo es, ¿verdad? – Supertecnoboff

59

En primer lugar, usted tiene que asegurarse de que la cadena contiene al menos 3 Caracteres:

NSString *fullString = /* obtain from somewhere */; 
NSString *prefix = nil; 

if ([fullString length] >= 3) 
    prefix = [fullString substringToIndex:3]; 
else 
    prefix = fullString; 

substringToIndex: lanzará una excepción si el índice que proporcionó está más allá del final de la cadena.

+5

O, envuelve un bloque @ try/@ catch. No obstante, esta es una mejor respuesta que la otra. –

+0

útil y funcionó para mí perfectamente, gracias – Logic

2

la manera correcta es:

text = [text substringToIndex:NSMaxRange([text rangeOfComposedCharacterSequenceAtIndex:2])]; 

substringToIndex de NSString está indexando por unidad de código, emoji lleva dos unidades de código.

asegúrese de verificar el índice usted mismo.

Cuestiones relacionadas