2011-10-03 28 views
67

Tengo algunos problemas tratando de eliminar el último carácter de un NSString. Soy un poco novato en Objective-C y no tengo idea de cómo hacer que esto funcione.Eliminar el último carácter de NSString

¿Podrían ustedes encenderme?

+5

"¿Podrían ustedes (http [me iluminará?]: // dictionary.reference.com/browse/light+up?r=75&src=ref&ch=dic) ". El uso que estás buscando es "[ilustre] (http://dictionary.reference.com/browse/enlighten?r=75&src=ref&ch=dic) me". – darvids0n

Respuesta

178
NSString *newString = [oldString substringToIndex:[oldString length]-1]; 

se refieren siempre al documentation:


incluir código correspondiente a su caso:

NSString *str = textField.text; 
NSString *truncatedString = [str substringToIndex:[str length]-1]; 
+2

Parece que mi Xcode doenst 'entiende' este "substringToIndex", incluso lo autoescribe. ¿Es correcto? – markus

+1

Siempre y cuando '#import ' y esté usando Mac OS X 10.0 o posterior/iOS 2.0 o posterior, entonces sí, es correcto. Asegúrese de descargar la documentación establecida en la configuración de Xcode para obtener el autocompletado de métodos. – darvids0n

+0

@markus ¿lo está llamando en un NSString? Por las dudas, publique la línea de código donde desee usarla. – sidyll

11

Prueba esto:

s = [s substringToIndex:[s length] - 1]; 
+0

esto es vulnerable a bloqueos cuando la longitud de NSString es 0, agregue la validación: ** if ([s length]> 0) {** s = [s substringToIndex: [s length] - 1]; **} ** – krischu

4
NSString *string = [NSString stringWithString:@"ABCDEF"]; 
NSString *newString = [string substringToIndex:[string length]-1]; 
NSLog(@"%@",newString); 

Se puede ver = ABCDE

+0

Formatee su código usando la opción "{}" dentro del editor. :-) –

3
NSString = *string = @"abcdef"; 

string = [string substringToIndex:string.length-(string.length>0)]; 

Si hay un personaje eliminar (es decir, la longitud de la cadena es mayor que 0) (string.length>0) devuelve 1, con lo que el código de retorno:

string = [string substringToIndex:string.length-1]; 

si no hay un personaje eliminar (es decir, la longitud de la cadena no es mayor que 0) (string.length>0) devuelve 0, por lo tanto, el retorno de código:

string = [string substringToIndex:string.length-0]; 

que evita accidentes.

1

Este código sólo devuelve el último carácter de la cadena y no quitarla:

NSString *newString = [oldString substringToIndex:[oldString length]-1]; 

se puede utilizar esto en vez de eliminar el último carácter y retener los valores restantes de una cadena:

str = [str substringWithRange:NSMakeRange(0,[str length] - 1)]; 

y también utilizando substringToIndex a un NSString con 0 longitud dará lugar a accidentes.

se debe añadir la validación antes de hacerlo, de esta manera:

if ([str length] > 0) { 

    str = [str substringToIndex:[s length] - 1]; 

} 

con esto, es seguro de usar método substring.

NOTA: Apple rechazará su aplicación si es vulnerable a bloqueos.

0

Este pequeño y agradable código que encontré por casualidad, y aún no lo he visto sugerido en Stack.

Solo funciona si los caracteres que desea eliminar o modificar existen, lo que es conveniente en muchos escenarios. Si/s no existe el carácter, no va a alterar su NSString:

NSString = [yourString stringByReplacingOccurrencesOfString:@"YOUR CHARACTERS YOU WANT TO REMOVE" withString:@"CAN either be EMPTY or WITH TEXT REPLACEMENT"]; 

Ésta es la forma en que lo uso:

//declare what to look for 
NSString * suffixTorRemove = @"</p>"; 
NSString * prefixToRemove = @"<p>"; 
NSString * randomCharacter = @"</strong>"; 
NSString * moreRandom = @"<strong>"; 
NSString * makeAndSign = @"&"; 

//I AM INSERTING A VALUE FROM A DATABASE AND HAVE ASSIGNED IT TO returnStr 
returnStr = [returnStr stringByReplacingOccurrencesOfString:suffixTorRemove withString:@""]; 
returnStr = [returnStr stringByReplacingOccurrencesOfString:prefixToRemove withString:@""]; 
returnStr = [returnStr stringByReplacingOccurrencesOfString:randomCharacter withString:@""]; 
returnStr = [returnStr stringByReplacingOccurrencesOfString:moreRandom withString:@""]; 
returnStr = [returnStr stringByReplacingOccurrencesOfString:makeAndSign withString:@"&"]; 

//check the output 
NSLog(@"returnStr IS NOW: %@", returnStr); 

Ésta línea es muy fácil de llevar a cabo tres acciones en un solo :

  1. comprueba su cadena para el personaje/s que desea encontrar
  2. Puede reemplazar o alterar con lo que quiera
  3. no afecta rodea código

Es como sopa de letras excepto para iOS

0

simple y mejor enfoque

[mutableString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)]; 
Cuestiones relacionadas