.Net: Leere Zeichenfolge ist nicht klar Leerzeichen?
Ich habe immer die Verwendung von String.IsNullOrEmpty prüfen, ob eine leere Zeichenfolge. Es vor kurzem zu meiner Aufmerksamkeit, dass es sich um eine " Zählung als nicht eine leere Zeichenfolge. Zum Beispiel,
Dim test As String = " "
If String.IsNullOrEmpty(test) Then
MessageBox.Show("Empty String")
Else
MessageBox.Show("Not Emtpy String")
End If
Wird es zeigen "Nicht Empty String". Wie überprüfen wir für die ""oder "" in einem string?
edit: ich war nicht bewusst, dass " die " zählen als Zeichen.
InformationsquelleAutor Jack | 2009-04-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie diese Methode, um zu überprüfen, für leere Zeichenfolgen an. Es unterscheidet sich von der Trim () - Versionen, dass es nicht zuweisen eine neue Zeichenfolge. Es verwendet auch eine erweiterte Vorstellung von Leerzeichen.
Nein, das wäre eine profiler :). Ich kann mir vorstellen Sie sind in der Nähe der gleichen Geschwindigkeit, wie Sie tun in etwa das gleiche. Der wesentliche Unterschied ist die Zuordnung der Zeichenfolge
Trim() würde im schlimmsten Fall die Kopie n-1 Zeichen aus dem ursprünglichen string in eine neue (wenn einer führenden oder nachgestellten Leerzeichen). Am besten wäre es ein leerer string zurückgegeben (wenn es bereits leer oder leer) oder die ursprüngliche Zeichenfolge (wenn es keine führenden oder nachgestellten Leerzeichen).
InformationsquelleAutor JaredPar
String.IsNullOrWhiteSpace ist in der BCL .NET 4
InformationsquelleAutor Phil Devaney
" " Ist eine ASCII-Wert 32, ist es nicht anders als jedem anderen ASCII-Zeichen außer "sieht" leer.
InformationsquelleAutor Petras
Das problem ist, dass Sie brauchen, um schneiden Sie die Zeichenfolge, wenn Sie rufen Sie trim() auf einen null-string, erhalten Sie eine Fehlermeldung.
Dieser Fehler aus.
Müssen Sie etwas tun, wie
Dies wird sicherstellen, dass die Zeichenfolge ist nicht null oder leer ist, wenn hat es etwas trimmen und dann sicherzustellen, dass Sie nicht leer ist.
Bearbeiten
Dank Slough, hilft mir mit meinem VB-syntax. Ich bin ein C# - Typ benötigen, um Pinsel auf vb-syntax
InformationsquelleAutor JoshBerke
In VB.NET Sie müssen einen test zu verwenden, wie diese:
Den
OrElse
verhindert, dass die NullException auftreten, auf dietest.Trim()
VB verwendet Oder und OrElse, wo Sie als C# verwendet | und ||
Dies hat eine weitere Prüfung der null-als es braucht. Besseres zu tun: Wenn (s Nichts OrElse s.Trim() = String.Leer), Dann
Wird die extra-null-test einen Unterschied sorgen machen?
Das ist es nicht, aber Trim() kann eine teure operation sein gegenüber zu überprüfen jedes Zeichen für Char.IsWhiteSpace().
InformationsquelleAutor Gavin Miller
InformationsquelleAutor François
Als erwähnt wurde, aufrufen von Trim() wird eine NullReferenceException ausgelöst, wenn der string null ist. Manchmal benutze ich
Regex.IsMatch(test, "^ +$")
(hoffe ich habe die Reihenfolge der parameter rechts) zu testen, für einen oder mehrere Räume. Die ^ und $ stellen Sie sicher, dass Sie passend zu den gesamten string.InformationsquelleAutor John M Gant
Wenn Sie wirklich brauchen, um die Behandlung von Zeichenfolgen, die nur whitespace-Zeichen das gleiche wie leere oder null-Zeichenfolgen haben, dann könnten Sie eine Erweiterung Methode wie diese (sorry, es ist in C#):
Dies ermöglicht es Ihnen zu schreiben:
InformationsquelleAutor M4N
InformationsquelleAutor Mark Cidade
Vielleicht möchten Sie einfach nur schneiden Sie die Zeichenfolge (Leerzeichen), bevor es überprüfen?
test.Trim() == string.Empty
. Es ist eine Frage der Lesbarkeit für Sie persönlich (glaube ich nicht, es ist jede performance anders, als beide Prüfungen wohl optimiert).Außer, der test ist null ... sorry, Nichts in VB.NET es wird Abstürzen.
Lesen Sie die kommentierte Zeile. 🙂
InformationsquelleAutor Noldorin
Folgendes kann nicht funktionieren, irgendwann, wenn die str ist null, wie das aufrufen einer Methode auf null-Folge Ausnahme.
Wenn String.IsNullOrEmpty(str.Trim()) Then ' exception manchmal
...
Am Ende, Wenn
InformationsquelleAutor Niran
Können Sie eine Erweiterung Methode wie diskutiert wurde hier und halten Sie die gleiche Benutzerfreundlichkeit, die Sie zuvor hatte, mit
IsNullOrEmpty()
.InformationsquelleAutor sipwiz
Versuchen
Hoffe, das hilft.
Ja, ich denke, das gekennzeichnet wurde, wird höher die Kette 🙂
InformationsquelleAutor Stephen Newman