You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复仅校验连字符、空格、大写字母及数字的字符串验证方法异常

问题原因

原代码存在3个核心逻辑错误:

  • 校验逻辑完全颠倒:需求是校验所有字符都属于指定合法类型,但原代码只要遍历到第一个合法字符就直接return true,完全不会校验后续字符,这是第5位出现非法字符仍返回true的根本原因。
  • 字符比较类型不匹配:c.Equals("-")中变量c是char类型,"-"是字符串类型,类型不一致导致该判断永远为假,合法字符'-'会被误判为非法。
  • 循环终止逻辑错误:遇到第一个非法字符时仅执行break跳出循环后返回false,刚好和需求逻辑相反。

修正后代码

public bool CarLicensePlateCheck(string m)
{
    // 先校验长度是否符合要求
    if (m.Length < 4 || m.Length > 12)
    {
        return false;
    }
    // 遍历所有字符,遇到非法直接返回false
    foreach(char c in m)
    {
        if (!(char.IsDigit(c) || char.IsUpper(c) || char.IsWhiteSpace(c) || c == '-'))
        {
            return false;
        }
    }
    // 所有字符都校验通过才返回true
    return true;
}

逻辑说明

  1. 先判断字符串长度是否在4-12区间,不符合直接返回false
  2. 遍历每个字符,只要存在任意一个字符不符合合法规则,直接返回false
  3. 所有字符都完成校验且全部合法,才返回true

内容的提问来源于stack exchange,提问作者NitroSage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:06:04