密码特殊字符验证代码逻辑优化需求:解决无效遍历与误提示问题
修复特殊字符检查逻辑
原代码的问题很明确:每检查一个字符就弹出提示,只要第一个字符不是特殊字符就会先弹错误,就算后面找到特殊字符也会继续遍历到底,还可能出现多次弹窗的情况。
修改后的代码如下:
var Number: Integer; HasSpecialChar: Boolean; begin HasSpecialChar := False; // 遍历输入字符串,检查是否存在特殊字符 for Number := 1 to Length(s) do begin if Position(s[Number], Array) > 0 then begin HasSpecialChar := True; Break; // 找到一个特殊字符就够了,直接终止循环 end; end; // 遍历结束后统一给出提示 if HasSpecialChar then ShowMessage('Success') else ShowMessage('Password must contain at least one special character'); end;
修改说明
- 新增
HasSpecialChar布尔变量,用来标记是否找到特殊字符,避免中途频繁弹窗 - 找到特殊字符后立即用
Break跳出循环,不用再检查剩余字符,提升运行效率 - 遍历完成后根据标记值统一弹出一次提示,不会出现提前误提示或多次弹窗的问题
内容的提问来源于stack exchange,提问作者Henry
相关产品推荐
相关产品推荐

