gpt4 book ai didi

c# - Regex vs Tryparse 性能最好的是什么

转载 作者:太空狗 更新时间:2023-10-29 19:56:17 28 4
gpt4 key购买 nike

在我的 ASP.net 项目中,我需要验证用户输入的一些基本数据类型。数据类型有数字、小数、日期时间等。

就性能而言,我应该采取的最佳方法是什么?是通过Regex.IsMatch()还是通过TryParse()来实现?

提前致谢。

最佳答案

TryParseRegex.IsMatch 用于两个根本不同的事情。 Regex.IsMatch 告诉您所讨论的字符串是否与某些特定模式匹配。它返回是/否答案。 TryParse 实际上会在可能的情况下转换值,并告诉您它是否成功。

除非您在构造正则表达式时非常小心,否则Regex.IsMatch 可以在TryParse 时返回true > 将返回 false。例如,考虑解析 byte 的简单情况。使用 TryParse 你有:

byte b;
bool isGood = byte.TryParse(myString, out b);

如果 myString 中的值在 0 到 255 之间,TryParse 将返回 true

现在,让我们尝试使用 Regex.IsMatch。让我们看看,那个正则表达式应该是什么?我们不能只说 @"\d+" 甚至 @\d{1,3}"。指定格式变得非常困难。你必须处理前导 0,前导和尾随空格,允许 255 但不允许 256

这只是为了解析一个 3 位数字。当您解析 intlong 时,规则会变得更加复杂。

正则表达式非常适合确定形式。在确定值(value)时,他们很烂。由于我们的标准数据类型都有限制,因此确定其值是确定数字是否有效的一部分。

最好尽可能使用 TryParse,如果只是为了让自己免于尝试想出一个可靠的正则表达式来进行验证的麻烦的话。很可能(我几乎可以肯定)任何 native 类型的特定 TryParse 执行速度都比等效的正则表达式快。

上面说,我花在这个答案上的时间可能比你的网页花在执行你的 TryParseRegex.IsMatch 上的时间要多——整个页面的总和生活。在您的网站正在做的所有其他事情的上下文中,执行这些事情的时间是如此之少,您花在思考问题上的任何时间都被浪费了。

如果可以,请使用 TryParse,因为它更容易。否则使用 Regex

关于c# - Regex vs Tryparse 性能最好的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5715200/

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