2012-11-26 48 views
0

您好我有一個簡單的while循環在VBScript中的問題。無法獲得一個While循環與我的VBscipt工作

我有一個函數根據「;」分割一串電子郵件地址,然後它通過另一個函數(isValidEmail)運行每個電子郵件地址,它使用布爾返回進行一些簡單的驗證檢查。

如果任何「isValidEmail」函數返回false我希望這個「EmailSplitFunc」返回false並退出否則我希望整個事情返回true。

我有分裂功能,但我努力獲得一個在其中工作的循環。有任何想法嗎?

Function EmailSplitFunc(emailaddress) 
    Dim EmailSplitArray, i, 
    EmailSplitArray = split(EmailStudentCheck,";") 
    While isValidEmail(EmailStudentCheck) 
    For i = 0 To Ubound(EmailSplitArray) 
    EmailStudentCheck = EmailSplitArray(i) 
    isValidEmail(EmailStudentCheck) 
    Next 
    Wend 
End function 

回答

0

開始與頂級代碼測試(寫入)checkMList()函數:

Option Explicit 

Dim aTests : aTests = Array(_ 
    "[email protected];nix" _ 
    , "[email protected];[email protected]" _ 
) 
Dim sMList 
For Each sMList in aTests 
    Dim bOk : bOk = checkMList(sMList) 
    WScript.Echo CStr(bOk), sMList 
Next 

和添加假的checkM()函數:

Function checkM(sM) 
    checkM = 0 <> InStr(sM, "@") 
End Function 

然後考慮checkMList():它必須拆分sMList並檢查每個部分是否是有效的電子郵件;找到第一個失敗,函數應該返回False,只有當所有部分都通過檢查時,纔會返回True。這相當於:

Function checkMList(sMList) 
    Dim sM 
    For Each sM In Split(sMList, ";") 
     Dim bOk : bOk = checkM(sM) 
     WScript.Echo "*", CStr(bOk), sM 
     If Not bOk Then 
     checkMList = False ' first failure 
     Exit Function 
     End If 
    Next 
    checkMList = True ' reached if all ok 
End Function 

輸出:

* True [email protected] 
* False nix 
False [email protected];nix 
* True [email protected] 
* True [email protected] 
True [email protected];[email protected] 
+0

明白了,謝謝你的分解。 – user1569869

0

我想你只需要一個循環..

For i = 0 to Ubound(EmailSplitArray) 
    If isValidEmail(EmailSplitArray[i]) = False Then 
     // Return False 
    End If 
Next 
+0

我也這麼認爲,但使用類似的代碼,一切是假的。我認爲它起初看起來很直接。 – user1569869