2014-09-29 73 views
8

Cách nhanh nhất và dễ nhất (trong ASP cổ điển) để kiểm tra xem chuỗi có một số chuỗi (có chiều dài lớn hơn 0) tức là KHÔNG "Null", "Không có gì "," Empty "hoặc '' chuỗi rỗngChuỗi không phải là rỗng, trống hoặc chuỗi rỗng

+0

Có một lớp String trong ASP cổ điển? –

+3

@ LajosArpad Classic ASP không phải là một ngôn ngữ mà nó là một công nghệ có thể xử lý mã VBScript hoặc mã Javascript phía máy chủ. Vì vậy, VBScript không có một lớp chuỗi (như .net/C#), nhưng không có chức năng để thao tác chuỗi và biến. –

+1

Nếu bạn có một biến chuỗi, khi tôi hiểu câu hỏi của bạn, chỉ cần kiểm tra nó với 'Len (s)> 0'. Nếu bạn cần xác minh _type_ biến của bạn để đảm bảo đó là chuỗi, hãy xem câu trả lời (phức tạp hơn) bên dưới. – Bond

Trả lời

2

Bạn có thể sử dụng chức năng VarType() để kiểm tra xem đó có phải là chuỗi không, sau đó bạn có thể kiểm tra xem chuỗi đó có trống không. Câu lệnh này sẽ chỉ truyền qua một chuỗi không rỗng.

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

    End If 
End If 
+2

Vui lòng kiểm tra mã của bạn trước khi bạn đăng. VarType của "" và Trim ("") là 8 (chuỗi). Vì vậy, ý tưởng của bạn để kiểm tra 'VarType (MyString)> 1' là thiếu sót. –

+0

@ Ekkehard.Horner Bạn nói đúng, tôi không nhận thấy điều đó. Dù sao, tôi đã sửa nó. –

+0

Bây giờ số, booleans, và tất cả mọi thứ mà Len() stringyfies sẽ vượt qua như là chuỗi 'tốt'. –

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

Hy vọng điều này là hữu ích.

+0

Trước tiên, bạn cần phải đọc bài đăng gốc. – Paul

8

Để đảm bảo rằng Biến thể bạn xử lý có thuộc loại "chuỗi" phụ, bạn cần có chức năng VarType hoặc TypeName. Để loại trừ các chuỗi có độ dài bằng không, bạn cần Len(). Để bảo vệ chống lại các chuỗi không gian, bạn có thể ném vào một Trim().

Mã để minh họa/thử nghiệm với:

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 

đầu ra:

cscript 26107006.vbs 
"ok" True 
"" False 
" " True 
1 False 
1.1 False 
True False 
<Null> False 
<Empty> False 
<IRegExp2 object> False
+1

Ví dụ hay: +1 – Lankymart

5

Bạn có thể thử có một cái gì đó như thế này:

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

và sau đó bạn sẽ sử dụng nó như thế này :

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

Sẽ rất tuyệt nếu bạn có thể hiển thị tập lệnh hoàn chỉnh thay vì nói '--string có nội dung nào đó trong đó'. Điều đó sẽ giúp nhiều người dùng hơn. – jazzurro

1

Đây là một lớp lót giúp tránh tất cả các sự cố với Null bằng cách ghép nối giá trị bằng một chuỗi rỗng. Nó hoạt động cho Null, Empty, "" và tất nhiên, các chuỗi có độ dài thực tế! Người duy nhất nó không (cũng không nên) làm việc cho là Nothing, bởi vì đó là cho các biến đối tượng, trong đó một chuỗi không phải là.

isNullOrEmpty = (Len("" & myString) = 0) 
1

này đã làm việc cho tôi:

if mystring = "" then wscript.echo "Empty string" 
else wscript.echo "String is not empty" 
Các vấn đề liên quan