Quel est le meilleur était de déterminer si un nstring est vide? En ce moment, j'utilise ce qui suit: p>
Merci pour tout conseil. p>
Si (string == nil || [chaîne isélaltostring: @ ""]) {
// faire quelque chose }
code> p>
3 Réponses :
if ([string length] == 0) { // do something } If the string is nil, then the message to nil will return zero, and all will still be well.
+1 pour votre réponse. Qu'en est-il des suites d'espaces? Et si vous ne voulez pas les compter? Toute façon pratique?
@cocoafan non concis. Si vous devez le faire fréquemment, je suggère d'ajouter une catégorie à nstring code>, quelque chose comme
isnotempty code>, que vous pouvez faire vos chèques personnalisés. Ensuite, vous pouvez simplement faire
Si ([chaîne isnoteur]) {...} code> et il gérera également
nil code> s correctement ...
Vous voudrez peut-être toujours savoir pourquoi la longueur est renvoyée 0 afin qu'il puisse être utile parfois de vérifier NIL, après avoir obtenu le zéro.
Vous voudriez vérifier une chaîne tempée créée en divisant la chaîne avec composantSeparatedbharactersIset: [Nscharacterset WhitSpacCacharacTerset] puis rejoignant la gamme résultante des composants de chaîne.
Si vous attendez de grandes chaînes ou si vous n'avez fréquemment pas d'espace blanche, vous pouvez envelopper cela dans une vérification de la gamme de rubriquesFromet pour éviter une matrice inutile.
@Johncalsbeek s'il vous plaît, pas de négatifs dans les getters booléens! Je déteste voir le code comme si (! [String isnotempty]) { code>. Mieux vaut nommer la méthode
isempty code> ou
isBlank code>.
@Sulthan Je suis tout à fait d'accord avec vous, mais être négatif est important pour cette méthode particulière, car les messages vers Nil retourner n ° code>. Peut-être que
hasvalue code> ou quelque chose de ce genre serait mieux.
Pas bonne résolution
alors Le meilleur moyen est p> [NIL LONGUEL] code> est
0 code> p>
(0 == 0) code> est
1 code> p>
([longueur de chaîne] == 0) code> sera
1 code>. Bien que ce soit faux. P>
La longueur est un nombre et doit être vérifiée avec == 0. Si (! [Longueur de la chaîne]) est un piratage C et (sémantiquement) non correct depuis! devrait être utilisé pour les booléens. S'il vous plaît, ne dis pas que cela fonctionne toujours. Je sais que. C'est juste Néandertalish.
Cette réponse est fausse. ! 0 est 1 aussi, juste la même chose que 0 == 0. Le résultat est identique, la seule chose qui peut être argumée ici est une question de style
Ceci vérifiera non seulement s'il n'y a rien dans la chaîne mais retournera également faux s'il ne s'agit que de blouses.
NSString *tempString = [myString stringByReplacingOccurrencesOfString:@" " withString:@""]; if ([tempString length] != 0) { //There is something in the string. } else { //There is nothing or it is just whitespace. }
Cela supprime seulement les espaces de tête et de fuite
Vous savez quoi, vous avez raison. Je faisais beaucoup d'expérimentation et je dois avoir copié et collé le mauvais code. C'est corrigé. Ceci est beaucoup plus efficace.
Tout ce que cela pourrait être, -StringbyReplacingocurrencesFstring: l'aide: code> n'est pas particulièrement efficace. Beaucoup mieux pour tester ce que vous recherchez: des personnages non blouses.
! mystring || [mystring rangeofcharacterfromset: [[[[Nscharactterset WhitSpacCacétaractSetTerset] inversedset] .Location == nsnotfound code> (dans ce cas, vous devez tester si
mystring code> est
nil code> explicitement parce qu'un
nsrange code> résultant de la messagerie
nil code> n'aura pas
nsnotfound code> dans son
emplacement code>.)