gpt4 book ai didi

c# - '正则表达式' VS 'String Comparison operators/functions'

转载 作者:可可西里 更新时间:2023-11-01 13:18:34 26 4
gpt4 key购买 nike

这个问题是围绕 PHP 的性能设计的,但如果您愿意,您可以将其扩展到任何语言。

在使用 PHP 多年并不得不比较字符串之后,我了解到在性能方面,在正则表达式上使用字符串比较运算符是有益的。

我完全理解,有些操作必须使用正则表达式来完成,直到非常复杂,但对于可以通过正则表达式和字符串函数解决的操作。

举个例子:

PHP

preg_match('/^[a-z]*$/','thisisallalpha');

C#

new Regex("^[a-z]*$").IsMatch('thisisallalpha');

可以轻松完成

PHP

ctype_alpha('thisisallalpha');

C#

VFPToolkit.Strings.IsAlpha('thisisallalpha');

还有很多其他示例,但您应该明白我要表达的意思。

您应该尝试并倾向于使用哪个版本的字符串比较,为什么?

最佳答案

看起来这个问题是由我们的小争论引起的 here ,所以我觉得自己有义务做出回应。

php 开发人员正在积极地被“性能”洗脑,因此出现了许多谣言和神话,包括纯粹愚蠢的事情,如“双引号更慢”。正则表达式“慢”是这些神话之一,不幸的是手册支持(参见 preg_match 页面上臭名昭著的评论)。事实上,在大多数情况下你并不关心。除非您的代码被重复 10,000 次,否则您甚至不会注意到字符串函数和正则表达式之间的区别。如果您的代码确实重复了 10,000 次,那么无论如何您一定是做错了什么,您将通过优化您的逻辑来获得性能,而不是通过剥离正则表达式。

至于可读性,正则表达式确实难以阅读,但是,使用它们的代码在大多数情况下更短、更清晰和更简单(比较您和我在上面链接中的答案)。

另一个重要的问题是灵 active ,尤其是在 php 中,其字符串库不支持开箱即用的 unicode。在您的具体示例中,当您决定将站点迁移到 utf8 时会发生什么情况?使用 ctype_alpha 你有点不走运,preg_match 需要另一种模式,但会继续工作。

因此,正则表达式并不慢,可读性更好,也更灵活。为什么我们要避免它们?

关于c# - '正则表达式' VS 'String Comparison operators/functions',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3749886/

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