wake-up-neo.com

String ist nicht null, leer oder leer

Was ist der schnellste und einfachste Weg (in Classic ASP), um zu prüfen, ob eine Zeichenfolge eine Zeichenfolge hat (Länge größer als 0), dh NICHT "Null", "Nothing", "Empty" oder "' leere Zeichenfolge  

12
TruthOf42

Um sicherzustellen, dass die Variante, mit der Sie arbeiten, einen Untertyp "string" aufweist, benötigen Sie die Funktion VarType oder TypeName. Um Nulllängen auszuschließen, benötigen Sie Len (). Um sich vor Raumfolgen zu schützen, können Sie einen Trim () einwerfen.

Code zum Veranschaulichen/Experimentieren mit:

Option Explicit

Function qq(s) : qq = """" & s & """" : End Function

Function toLiteral(x)
  Select Case VarType(x)
    Case vbEmpty
      toLiteral = "<Empty>"
    Case vbNull
      toLiteral = "<Null>"
    Case vbObject
      toLiteral = "<" & TypeName(x) & " object>"
    Case vbString
      toLiteral = qq(x)
    Case Else
      toLiteral = CStr(x)
  End Select
End Function

Function isGoodStr(x)
  isGoodStr = False
  If vbString = VarType(x) Then
     If 0 < Len(x) Then
        isGoodStr = True
     End If
  End If
End Function

Dim x
For Each x In Array("ok", "", " ", 1, 1.1, True, Null, Empty, New RegExp)
    WScript.Echo toLiteral(x), CStr(isGoodStr(x))
Next

ausgabe:

cscript 26107006.vbs 
 "ok" True 
 "" False 
 "" True 
 1 False 
 1.1 False 
 True False 
 <Null> False .__ > False 
 <IRegExp2-Objekt> False
8
Ekkehard.Horner

Sie könnten versuchen, so etwas zu haben:

Function nz(valToCheck, valIfNull)
 If IsNull(valToCheck) then
    nz = valIfNull
 Else
    nz = valToCheck
 End if
End function

und dann würdest du es so benutzen:

if nz(var,"") <> "" then
  '--string has something in it
else
  '--string is null or empty
end is
5
Rocky

Hier ist ein Einzeiler, der allen Problemen mit Null ausweicht, indem er den Wert mit einer leeren Zeichenfolge verkettet. Es funktioniert für Null, Empty, "" und natürlich für Strings mit der tatsächlichen Länge! Die einzige, für die es nicht funktioniert (und auch nicht funktionieren sollte), ist Nothing, da dies für Objektvariablen gilt, für die eine Zeichenfolge nicht gilt.

isNullOrEmpty = (Len("" & myString) = 0)
3
rory.ap

Sie können die Funktion VarType() verwenden, um zu prüfen, ob es sich um eine Zeichenfolge handelt. Anschließend können Sie überprüfen, ob die Zeichenfolge nicht leer ist. Diese Anweisung wird nur eine Zeichenfolge durchlaufen, die nicht leer ist.

If VarType(MyString) = 8 Then
  If MyString <> "" Then 
    'String is Not Null And Not Empty, code goes here

  End If
End If
2
Control Freak

Das hat für mich funktioniert:

if mystring  = "" then wscript.echo "Empty string"
else wscript.echo "String is not empty"
1
Anthony Cassara
<%
Dim x,y
x = "abcdefg"

'counting length of string
y = Len(x) 
Response.Write (y)


'checking string is empty or not
If Len(x) = 0 then 
Response.Write ("<p>String is empty</p>")
Else
Response.Write ("<p>String is not empty</p>")
End If
%>

Hoffe das ist hilfreich.

0
Bhumit