无法使用我的For VBscript使用While循环

时间:2012-11-26 17:04:50

标签: vbscript

嗨我在vbscript中使用简单的while循环时遇到了麻烦。

我有一个Function,它根据“;”分割一串电子邮件地址然后它通过另一个函数(isValidEmail)运行每个电子邮件地址,该函数使用布尔返回进行一些简单的验证检查。

如果任何“isValidEmail”函数返回false,我希望这个“EmailSplitFunc”返回false并退出,否则我希望整个事情返回true。

我有分裂功能,但我正在努力获得一个有效的While循环。有什么想法吗?

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

2 个答案:

答案 0 :(得分:0)

我认为你只需要一个循环..

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

答案 1 :(得分:0)

从测试(要写入)checkMList()函数的顶级代码开始:

Option Explicit

Dim aTests : aTests = Array( _
    "a@b.com;nix" _
  , "a@b.com;c@d.com" _
)
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 a@b.com
* False nix
False a@b.com;nix
* True a@b.com
* True c@d.com
True a@b.com;c@d.com