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
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
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
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)
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
Das hat für mich funktioniert:
if mystring = "" then wscript.echo "Empty string"
else wscript.echo "String is not empty"
<%
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.