0

嗨,我在 vbscript 中使用简单的 while 循环时遇到问题。

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

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

我有拆分功能,但我正在努力获得一个有效的 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
4

2 回答 2

0

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

For i = 0 to Ubound(EmailSplitArray)
    If isValidEmail(EmailSplitArray[i]) = False Then
        // Return False 
    End If 
Next
于 2012-11-26T17:14:49.910 回答
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
于 2012-11-26T17:33:27.430 回答