嗨我在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
答案 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