web-dev-qa-db-ja.com

文字列がnull、空、または空の文字列ではありません

文字列に何らかの文字列(長さが0より大きい)がないか、つまり "Null"、 "Nothing"、 "Empty"、または '' 空の文字列

12
TruthOf42

扱うVariantがサブタイプ「文字列」であることを確認するには、VarTypeまたはTypeName関数が必要です。長さゼロの文字列を除外するには、Len()が必要です。一連のスペースを防ぐために、Trim()をスローできます。

以下を使用して説明/実験するコード:

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

出力:

cscript 26107006.vbs 
 "ok" True 
 "" False 
 "" True 
 1 False 
 1.1 False 
 True False 
 <Null> False 
 <Empty> False 
 <IRegExp2オブジェクト> False
8
Ekkehard.Horner

次のようなものを試すことができます:

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

そして、あなたはこれを次のように使用します:

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

値を空の文字列と連結することにより、Nullの問題をすべて回避する1行のライナーを次に示します。 NullEmpty""、そしてもちろん、実際の長さの文字列!動作しない(または動作しない)唯一のNothingは、オブジェクト変数用で、文字列はそうではないためです。

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

VarType() 関数を使用して文字列であるかどうかを確認し、文字列が空でないかどうかを確認できます。このステートメントは、空ではない文字列のみを渡します。

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

これは私のために働いた:

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

これが役に立てば幸いです。

0
Bhumit