Comment faire pour capturer les 4 derniers caractères de NSString
Je suis à l'acceptation d'une NSString
de hasard size
à partir d'un UITextField
et de le faire passer sur une méthode que je suis de la création de la capture seulement les 4 derniers caractères entrés dans l' string
.
J'ai regardé à travers NSString
de la Classe de Référence de la bibliothèque et la seule option que j'ai trouvé qui ressemble comme il va faire ce que je veux c'est
- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange
Je l'ai utilisé une fois avant, mais avec des paramètres statiques "qui ne changent pas", Mais pour cette mise en œuvre, je suis désireux de l'utiliser non statique paramètres qui changent en fonction de la taille de la chaîne de venir dans.
Jusqu'à présent c'est la méthode que j'ai créée, qui est passée un NSString
à partir d'une IBAction ailleurs.
- (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?
}
Vous devez vous connecter pour publier un commentaire.
Utiliser le substringFromIndex méthode,
OBJ-C:
SWIFT:
NSString *trimmedString=[string substringFromIndex:MAX((int)[string length]-4, 0)];
dans le cas où string est inférieur à 4 caractères de long.NSString* trimmedString = string.length > 4 ? [string substringFromIndex:(string.length - 4)] : string;
Essayer Cela,
La réponse rapide fournie par KingOfBliss est la production d'une erreur pour moi que de XCode 7.3, et ne doit pas être utilisé à l'avenir en raison de transition à des NS de classes, qui doivent être retirés dans Swift 3.0.
Un meilleur exemple que l'on considère qu'une plage non valide, ainsi que la possibilité de caractères spéciaux pour fournir le bon endroit pour supprimer:
De la chaîne en question: Voulez-vous un café?
Ceci va produire une réponse de
Voulez-vous un c
.En accédant à la chaîne avec le start & fin de la valeurs de l'indice, vous protéger contre les situations où tous les caractères sont de la même taille (ex:
\u{65}\u{301}
)no longer valid, as String does not support the length property
Et il ne l'a jamais fait. C'est pourquoi KingOfBliss utilisé(s as NSString)
à pont de Swift Chaîne à la Fondation NSString qui n'ont la propriété. 🙂var s = "a bunch of letters" let trimmedString: String = (s as NSString).substringFromIndex(max(s.length-4,0))
dans XCode 7.3 et il produit la même erreur. De toute façon, il ne serait pas souhaitable de pont NS classes en raison de changements en cours de la 3.0.