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 = @"&amp;";
//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:
- Verifica tu cadena para el personaje / s que deseas encontrar
- Puede reemplazarlos o alterarlos con lo que quieras
- 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.