如何校验字符串仅包含数字、短横线和空格?非正则实现方法
非正则实现字符串仅包含数字、短横线、空格的校验方案
实现思路:遍历字符串的每一个字符,逐一校验是否属于允许的字符范围,只要存在一个不符合要求的字符即判定校验失败。
允许的字符范围如下:
- 0-9的半角数字
- 半角短横线
- - 半角空格
基础遍历实现(C#)
可读性高,适合需要在遍历过程中添加额外自定义逻辑的场景:
bool IsValidString(string input) { // 若业务允许空字符串通过,可删除此行判断 if (string.IsNullOrEmpty(input)) { return false; } foreach (char c in input) { if (!(char.IsDigit(c) || c == '-' || c == ' ')) { // 存在非法字符,校验失败 return false; } } // 所有字符均符合要求,校验通过 return true; } // 调用逻辑和原正则写法对齐 if (!IsValidString(str)) { // 校验失败后的业务逻辑 }
LINQ简化实现(C#)
代码更简洁,适合不需要额外自定义逻辑的场景:
bool IsValidString(string input) { return !string.IsNullOrEmpty(input) && input.All(c => char.IsDigit(c) || c == '-' || c == ' '); }
补充说明
如果业务需要支持全角数字、全角空格、全角短横线,直接在判断条件中追加对应字符的校验规则即可。
内容的提问来源于stack exchange,提问作者appy243
相关产品推荐
相关产品推荐

