2 Stimmen

.Net: Leere Zeichenfolge ist kein eindeutiges Leerzeichen?

Ich habe immer String.IsNullOrEmpty verwenden, um für eine leere Zeichenfolge zu überprüfen. Kürzlich ist mir aufgefallen, dass ein " " nicht als leere Zeichenfolge zählt. Zum Beispiel,

 Dim test As String = " "
    If String.IsNullOrEmpty(test) Then
        MessageBox.Show("Empty String")
    Else
        MessageBox.Show("Not Emtpy String")
    End If

Es wird "Not Empty String" angezeigt. Wie können wir also nach " " oder " " in einer Zeichenkette suchen?

edit: Mir war nicht bewusst, dass " " als Zeichen zählt.

13voto

JaredPar Punkte 699699

Probieren Sie diese Methode aus, um nach leeren Zeichenfolgen zu suchen. Sie unterscheidet sich von den Trim()-Versionen dadurch, dass sie keine neue Zeichenkette anlegt. Außerdem verwendet sie einen erweiterten Begriff von Leerzeichen.

Public Function IsNullOrBlank(ByVal str as String) As Boolean
  if String.IsNullOrEmpty(str) Then
    Return True
  End IF
  For Each c In str
    IF Not Char.IsWhiteSpace(c) Then
      Return False
    End If
  Next
  Return True
End Function

7voto

Phil Devaney Punkte 17037

String.IsNullOrWhiteSpace ist in der BCL in .NET 4

6voto

Petras Punkte 4504

Ein " " ist ein ASCII-32-Wert, der sich nicht von anderen ASCII-Zeichen unterscheidet, außer dass er leer "aussieht".

3voto

JoshBerke Punkte 64214

Das Problem ist, dass Sie die Zeichenkette abschneiden müssen, aber wenn Sie trim() bei einer Null-Zeichenkette aufrufen, erhalten Sie einen Fehler.

string.IsNullOrEmpty(s.Trim())

Dies führt zu einer Fehlermeldung.

Sie müssen etwa Folgendes tun

if (Not string.IsNullOrEmpty(s) AndAlso s.Trim()!=string.Empty)

Dies wird überprüfen, dass die Zeichenfolge nicht null oder leer ist, wenn es etwas hat, wird es trim und dann überprüfen, seine nicht leer.

Editar

Danke Slough, dass du mir mit meiner VB-Syntax geholfen hast. Ich bin ein C#-Typ müssen auf vb-Syntax auffrischen

1voto

Gavin Miller Punkte 41976

In VB.NET müssen Sie einen Test wie diesen verwenden:

If String.IsNullOrEmpty(test) OrElse String.IsNullOrEmpty(test.Trim()) Then

El OrElse verhindert das Auftreten der NullException auf der test.Trim()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X