.Net: chaîne Vide n'est pas un espace libre d'un personnage?
J'ai toujours utiliser des chaînes de caractères.IsNullOrEmpty pour rechercher une chaîne vide. Il a récemment porté à mon attention que "" le comte, non pas une chaîne vide. Par exemple,
Dim test As String = " "
If String.IsNullOrEmpty(test) Then
MessageBox.Show("Empty String")
Else
MessageBox.Show("Not Emtpy String")
End If
Il va montrer "Pas la Chaîne Vide". Alors, comment faisons-nous pour vérifier les "" ou "" dans une chaîne de caractères?
edit: je n'étais pas au courant que "" comte de caractère.
OriginalL'auteur Jack | 2009-04-07
Vous devez vous connecter pour publier un commentaire.
Essayer cette méthode pour vérifier des chaînes vides. Elle est différente de la Garniture() versions dans le sens où il n'a pas allouer une nouvelle chaîne. Il utilise également une plus notion élargie de l'espace.
non, cela nécessiterait un profiler :). J'imagine qu'ils sont près à la même vitesse comme ils le font à peu près la même chose. La principale différence est l'attribution de la chaîne
Trim() serait, au pire, exemplaire n-1 caractères à partir de votre chaîne d'origine dans une nouvelle (si il y en avait un leader ou suiveur espace blanc). Au mieux, il serait de retour la chaîne vide (si elle était déjà vide ou vide) ou la chaîne d'origine (si il n'y avait pas de leader ou suiveur espace blanc).
OriginalL'auteur JaredPar
Chaîne de caractères.IsNullOrWhiteSpace est dans la BCL .NET 4
OriginalL'auteur Phil Devaney
" Est un fichier ASCII 32 valeur, il n'est pas différent de tout autre caractère ASCII sauf qu'il "semble" vide.
OriginalL'auteur Petras
Le problème est que vous besoin de couper la chaîne, cependant, si vous appelez trim() sur une chaîne nulle, vous obtiendrez une erreur.
Cette erreur.
Vous aurez besoin de faire quelque chose comme
Ceci permettra de vérifier que la chaîne n'est pas null ou vide, si elle a quelque chose, il va couper, puis de vérifier sa non vide.
Modifier
Grâce Slough pour m'aider avec mes VB syntaxe. Je suis un C# gars vous avez besoin de rafraîchir vb de la syntaxe
OriginalL'auteur JoshBerke
Dans VB.NET vous aurez besoin d'utiliser un test comme ceci:
La
OrElse
empêche la NullException de se produire sur latest.Trim()
VB utilise Ou et OrElse où, comme C# utilise | et ||
Cela a un test de nulle qu'il n'en faut. De mieux à faire: Si le (s n'Est Rien OrElse s.Trim() = String.Vide) Puis
Est extra null test de la différence la peine de s'inquiéter?
Il n'est pas, mais Trim() peut être une opération coûteuse par rapport à la vérification de chaque personnage pour Char.IsWhiteSpace().
OriginalL'auteur Gavin Miller
OriginalL'auteur François
Comme il a été mentionné, l'appel de Trim() lèvera une exception NullReferenceException si la chaîne est nulle. J'utilise parfois
Regex.IsMatch(test, "^ +$")
(espère que j'aurais l'ordre des paramètres de la droite) pour tester un ou plusieurs espaces. Le ^ et le $ assurez-vous que vous êtes correspondant à la totalité de la chaîne.OriginalL'auteur John M Gant
Si vous avez vraiment besoin pour traiter les chaînes de caractères ne contenant que des espaces de caractère même comme vide ou null chaînes, alors vous pouvez utiliser une méthode d'extension comme celle-ci (désolé, c'est en C#):
Cela permet d'écrire:
OriginalL'auteur M4N
OriginalL'auteur Mark Cidade
Peut-être vous voulez juste de découper la chaîne (de l'espace) avant de l'archiver?
test.Trim() == string.Empty
. C'est une question de lisibilité pour vous personnellement (je ne crois pas qu'il y a du spectacle, les différents, comme les chèques probablement optimisé).Sauf que c'est de tester est nul ... désolé Rien dans VB.NET il va se planter.
Lire le commentaire de la ligne. 🙂
OriginalL'auteur Noldorin
Les éléments suivants peuvent ne pas fonctionner parfois, si le str est null comme l'appel d'une méthode sur null entraînera une exception.
Si La Chaîne.IsNullOrEmpty(str.Trim()) Then ' exception parfois
...
Fin Si
OriginalL'auteur Niran
Vous pouvez ajouter une extension de la méthode telle qu'elle a été discuté ici et de garder la même facilité d'utilisation que vous aviez avec
IsNullOrEmpty()
.OriginalL'auteur sipwiz
Essayer
Espère que ça aide.
Ouais, je crois que c'est marqué plus haut dans la chaîne 🙂
OriginalL'auteur Stephen Newman