Comment faire pour vérifier le dernier char d'un NSString
Je veux poser une question à propos de la NSString * en objective C. puis-je vérifier le dernier char d'un NSString * objet?
Exemple:
NSString* data = @"abcde,";
if(data is end with ',') //I don't know this part
//do sth
Merci beaucoup.
Vous devez vous connecter pour publier un commentaire.
NSString *lastCharacter = [myString substringFromIndex:[myString length] - 1]; NSLog(@"%@", lastCharacter);
La NSString Guide De Programmation recommande:
Donc, dans votre exemple:
Explication est un peu longue à écrire? Peut-être, mais si vous faites cela dans plus d'un endroit, il peut facilement être refait dans un helper.
Voici un lien vers le NSPredicate docs.
Modifier
J'ai fait quelques profilage et il est exagéré dans ce cas simple (voir mon commentaire ci-dessous). Je vais laisser la réponse jusqu'ici de toute façon, juste comme exemple de l'utilisation de prédicats pour ce genre de chose.
-hasSuffix:
est juste une méthode pratique pour la mise en place d'une recherche sur le NSString. Juste parce que c'est plus court à écrire n'est pas de la rendre plus efficace. C'est également une recommandation de la documentation (que j'ai liée) et il donne également à l'interlocuteur une autre option pour tester son code de la-hasSuffix:
approche ne fonctionne pas, et introduit une nouvelle approche de la chaîne de la recherche que de l'interlocuteur et d'autres peuvent ne pas avoir déjà considéré.hasSuffix:
n'a qu'à s'assurer que les derniers caractères du récepteur sont égal à l'argument. Il ne m'étonne pas si le prédicatendswith
juste utiliséhasSuffix:
en interne. Aussi, le code fourni pourhasSuffix:
dans l'autre réponse œuvres. Si elle ne fonctionne pas pour l'OP, alors il ne nous a donné suffisamment d'informations pour répondre correctement à sa question.-hasSuffix
. 36 ms par rapport à 14ms à l'analyse de 107 000 mots (c'est donc toujours rapide). Je suis corrigé!Si vous êtes inquiet au sujet de la performance, et que vous voulez vérifier pour un caractère, utilisez -characterAtIndex: méthode peut très bien être plus rapide. -hasSuffix: prend une chaîne de caractères, donc potentiellement besoin de faire plus de travail que la simple vérification d'un seul caractère (bien que la différence peut être trivial).
Vous pouvez également utiliser les catégories pour ajouter une méthode à NSString comme ceci:
Vous devriez profil, bien sûr, pour être sûr. Gardez à l'esprit que, en mettant les endsWithCharacter dans une méthode, nous avons ajouté la transmission de message de surcharge, ce qui fausserait les résultats de profilage, sauf si vous faites la même chose lors de l'analyse des solutions de rechange.
Tout cela est sans doute prématuré d'optimisation pour la plupart des cas - mais bien sûr, si vous êtes en train de faire ce test des milliers de fois par seconde, il peut bien en question (dans ce cas, vous souhaiterez probablement utiliser directement le code dans la boucle, comme la transmission de messages à l'intérieur d'un resserrement de l'intérieur de la boucle n'est pas un bon plan).
-[NSString characterAtIndex:]
renvoie uneunichar
, pas unchar
.