gpt4 book ai didi

c# - 确保字符串仅包含 C# 中的某些字符

转载 作者:行者123 更新时间:2023-11-30 19:30:40 26 4
gpt4 key购买 nike

我有一个字符串,我想确保它只包含 BSEO|0123456789 中的字符。我试着用这个正则表达式来做到这一点

Regex r = new Regex("^[BSEO|0123456789]");
if (r.IsMatch(str)) throw new Exception("Invalid character.");

但它的行为不正确,(例如字符串 SE 抛出异常)。我做错了什么,我该如何解决,是否有比使用正则表达式更好的解决方案?

最佳答案

你可以使用 linq:

if (str.Distinct().Except("BSEO|0123456789").Any())
throw new Exception("Invalid character.");

编辑

经过一段时间的思考,我认为对 Distinct() 的调用可能是一次失败的微优化尝试。如果性能很重要,请尝试使用和不使用。如果没有,它可能会表现得更好。

编辑 2

我现在确信 Distinct() 会使查询运行得更慢。改用这个:

if (str.Except("BSEO|0123456789").Any())
throw new Exception("Invalid character.");

关于c# - 确保字符串仅包含 C# 中的某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8650724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com