ios iphone swift nsstring nsrange

ios - Cómo capturar los últimos 4 caracteres de NSString



iphone swift (3)

La respuesta de Swift proporcionada por KingOfBliss está produciendo un error para mí a partir de XCode 7.3, y no debería usarse en adelante debido a un puente a las clases de NS, que deberían eliminarse en Swift 3.0.

Un mejor ejemplo que considera un rango no válido, así como la posibilidad de caracteres especiales para proporcionar el lugar adecuado para eliminar:

La cadena en cuestión: Voulez-vous un café?

var trimmedString = "Voulez-vous un caf/u{65}/u{301}?" let stringSize = trimmedString.characters.count let startIndex = 4 if stringSize >= startIndex { let range = trimmedString.endIndex.advancedBy(-startIndex)..<trimmedString.endIndex trimmedString.removeRange(range) }

Esto producirá una respuesta de Voulez-vous un c .

Al acceder a la cadena con los valores de índice de inicio y final, se protege contra situaciones en las que no todos los caracteres son del mismo tamaño (por ejemplo: /u{65}/u{301} )

Estoy aceptando un NSString de size aleatorio de un UITextField y pasándolo a un método que estoy creando que capturará solo los últimos 4 caracteres ingresados ​​en la string .

Miré a través de la biblioteca de NSString Class Reference y la única opción real que encontré que parece que hará lo que yo quiero es

- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange

Lo he usado una vez antes pero con parámetros estáticos ''que no cambian'', pero para esta implementación quiero usar parámetros no estáticos que cambian dependiendo del tamaño de la cadena que ingrese.

Hasta ahora, este es el método que he creado, al que se le pasa un NSString desde un IBAction, donde más.

- (void)padString:(NSString *)funcString { NSString *myFormattedString = [NSString stringWithFormat:@"%04d",[funcString intValue]]; // if less than 4 then pad string // NSLog(@"my formatedstring = %@", myFormattedString); int stringLength = [myFormattedString length]; // captures length of string maybe I can use this on NSRange? //NSRange MyOneRange = {0, 1}; //<<-------- should I use this? if so how? }


Prueba esto,

NSString *lastFourChar = [yourNewString substringFromIndex:[yourNewString length] - 4];


Use el método substringFromIndex,

OBJ-C:

NSString *trimmedString=[string substringFromIndex:MAX((int)[string length]-4, 0)]; //in case string is less than 4 characters long.

RÁPIDO:

let trimmedString: String = (s as NSString).substringFromIndex(max(s.length-4,0))