9
votes

La chaîne est nulle ou vide

OK, voici quelques points faciles. Pybinding est venu avec ce script:

bool IsNotNullOrEmpty(string value) {
    return (value != null) && (value.Length > 0 );
}


1 commentaires

Eh bien, .NET comprend string.isnullorempty. Cela fonctionnerait-il?


6 Réponses :


19
votes

Pour vérifier si une chaîne est vide, vous utiliseriez len . Essayez ceci: xxx


4 commentaires

Voilà, j'ai rollecback à ma réponse originale. J'ai supprimé mon message puis l'a remplacé avec ce que je croyais être une solution "pythonique", qui implique le pas non .


-1 Ceci n'est pas nécessaire en python car aucun et '' est faux en python: docs.python.org/library/stdtypes.html#truth-value-testing


@Lukas, affichez l'historique de cette réponse. Jonathon n'a pas aimé cette solution et cela ne fonctionne pas toujours pour les cours d'ironthon.


@Brian. Eh bien, ce n'est pas pythonique mais il fait bon piratage de faire du travail pybindig si mon dernier commentaire de la réponse de @ Ignacio est vrai.



0
votes

Je pense, xxx

équivaut à xxx

pour les chaînes. Donc, je pense que la fonction n'est pas nécessaire dans Python.


0 commentaires

1
votes
def IsNotNullString(s):
    return bool(s)
Rules of Python boolean conversion.

1 commentaires

@Jonathanallen Je viens de courir cela dans l'interprète Python et cela a fonctionné pour moi. Dans quelle version de Python avez-vous eu un vrai? J'utilise 2.7.3



5
votes

Vous ne devriez pas le faire dans une fonction. Au lieu de cela, vous devriez simplement utiliser:

if someStringOrNone:


5 commentaires

C'est la version pythonique préférée et elle fonctionne parfaitement pour les cordes de Python. La seule raison pour laquelle il pourrait ne pas fonctionner n'est peut-être pas si vous passez du type .NET qui n'est pas compatible avec les chaînes Python à la fonction.


@Jonathan Je ne pense pas que vous passiez une chaîne vide à l'épreuve. Comme Ignacio vous a montré, cela fonctionne pour les chaînes vides. Pouvez-vous montrer le code des États-Unis où la chaîne vide évalue comme vrai? Je pense que ce serait un bug alors.


La chaîne vide était stockée dans une commande WPF et acheminée vers une fonction IronPython via pybinding. Je n'ai aucune idée de quelle "chaîne python" est ou si elle est compatible avec un système.string.


Je ne sais pas pybinding, mais cela me semble que comme pybinding gère les valeurs comme des objets plus riches. Alors, sa chaîne vide n'est pas «mais une classe de« pybindingvalue »qui n'est définitivement pas fausse.


Imprimez le REC () de la valeur afin que nous puissions jeter un coup d'oeil.



3
votes

Si c'est ironpython, alors pourquoi ne pas utiliser la mise en œuvre par défaut de Isnullorempty de System.string? XXX


0 commentaires

0
votes
if not value or len(value)==0:
    return True 
else:
    return False
Try this one. I recommend you to read this book:https://play.google.com/store/apps/details?id=com.gavin.gbook

0 commentaires