web-dev-qa-db-fra.com

La chaîne n'est pas une chaîne nulle, vide ou vide

Quel est le moyen le plus rapide et le plus simple (sous Classic ASP) de vérifier si une chaîne a une chaîne (dont la longueur est supérieure à 0), c’est-à-dire NON "Null", "Nothing", "Empty" ou "' string vide  

12
TruthOf42

Pour vous assurer que le Variant que vous traitez est de sous-type "chaîne", vous avez besoin de la fonction VarType ou TypeName. Pour éliminer les chaînes de longueur zéro, vous avez besoin de Len (). Pour vous protéger des chaînes d'espace, vous pouvez ajouter un Trim ().

Code pour illustrer/expérimenter avec:

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

sortie:

cscript 26107006.vbs 
 "ok" Vrai .__ "" Faux. " > False 
 <Objet IRegExp2> False
8
Ekkehard.Horner

Vous pouvez essayer d'avoir quelque chose comme ça:

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

et vous l'utiliseriez comme ceci:

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

Voici un one-liner qui évite tous les problèmes avec Null en concaténant la valeur avec une chaîne vide. Cela fonctionne pour Null, Empty, "" et, bien sûr, des chaînes avec une longueur réelle! Le seul pour lequel il ne travaille pas (et ne devrait pas travailler) est Nothing, parce que c'est pour les variables d'objet, dont une chaîne ne fait pas partie.

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

Vous pouvez utiliser la fonction VarType() pour vérifier s’il s’agit d’une chaîne, puis vérifier si la chaîne n’est pas vide. Cette instruction ne fera que passer à travers une chaîne qui n'est pas vide.

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

Cela a fonctionné pour moi:

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
%>

J'espère que c'est utile.

0
Bhumit