c# - 检查字符串中的无效字符?最聪明的方法?

标签 c# .net list char

我想检查一些字符串是否有无效字符。对于无效字符,我指的是不应该出现的字符。这些是什么字符?这是不同的,但我认为这并不重要,重要的是我应该怎么做,以及最简单和最好的方式(性能)是什么?

假设我只想要包含'A-Z'、'empty'、'.'、'$'、'0-9'

的字符串

因此,如果我有一个像“HELLO STaCKOVERFLOW”这样的字符串 => 无效,因为 'a'。 好的,现在该怎么做?我可以做一个List<char>并将不允许的每个字符放入其中,并使用此列表检查字符串。也许不是一个好主意,因为那时有很多字符。但是我可以制作一个包含所有允许字符的列表吗?然后?对于字符串中的每个字符,我必须比较 List<char> ?有什么智能代码吗?还有一个问题:如果我将 A-Z 添加到 List<char>我必须手动添加 25 个字符,但据我所知,这些字符在 ASCII 表中为 65-90,我可以更轻松地添加它们吗?有什么建议么?谢谢

最佳答案

您可以为此使用正则表达式:

Regex r = new Regex("[^A-Z0-9.$ ]$");
if (r.IsMatch(SomeString)) {
    // validation failed
}

要从 A-Z0-9 创建一个字符列表,您可以使用一个简单的循环:

for (char c = 'A'; c <= 'Z'; c++) {
    // c or c.ToString() depending on what you need
}

但是您不需要正则表达式 - 几乎每个正则表达式引擎都理解范围语法 (A-Z)。

关于c# - 检查字符串中的无效字符?最聪明的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12350801/

相关文章:

python - 如何将两个列表中的每个元素与其他列表中的每个元素进行比较,然后将结果合并到一个字符串中

c# - .Net 中的音素语音

c# - 当你真的不能使用参数时如何为 SQL 查询转义字符串

c# - 单声道(Linux、C#): DLL in same folder can not be found (System. DllNotFoundException)

c# - 事务必须在 SQL Server 的存储过程中吗?

c# - SQL连接为什么会留下参数?

python - 如何将列表 "one by one"写入 python 中的二进制文件?

list - 如何在枚举列表中的项目之间放置数字?

c# - 在 .Net 中为复数形式附加 's' 的巧妙方法(语法糖)

c# - 支持自定义数字类型的 ToString(字符串格式)