objective-c nsstring

objective c - Eliminar el último carácter de NSString



objective-c (7)

Enfoque simple y mejor

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

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.

¿Podrían ustedes encenderme?


Este código simplemente devolverá el último carácter de la cadena y no la eliminará:

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

puede usar esto para eliminar el último carácter y retener los valores restantes de una cadena:

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

y también el uso de substringToIndex a un NSString con longitud 0 dará como resultado bloqueos.

debes agregar validación antes de hacerlo, así:

if ([str length] > 0) { str = [str substringToIndex:[s length] - 1]; }

con esto, es seguro usar el método de subcadena.

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


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

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

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

Así es como 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);

Esta línea es muy fácil de realizar tres acciones en una:

  1. Verifica tu cadena para el personaje / s que deseas encontrar
  2. Puede reemplazarlos o alterarlos con lo que quieras
  3. No afecta el código circundante

Es como sopa de letras, excepto para iOS


Prueba esto:

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


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

Siempre consulte la documentation :

Para incluir el código relevante para su caso:

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


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

Puedes ver = ABCDE


NSString = *string = @"abcdef"; string = [string substringToIndex:string.length-(string.length>0)];

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

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

Si NO hay un carácter para borrar (es decir, la longitud de la cadena NO es mayor que 0) (string.length>0) devuelve 0, lo que hace que el código retorne:

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

que previene bloqueos.