加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ‘正则表达式’VS’字符串比较运算符/函数’

发布时间:2020-12-15 08:14:54 所属栏目:百科 来源:网络整理
导读:这个问题是围绕 PHP中的性能设计的,但如果您愿意,可以将其扩展为任何语言. 经过多年使用PHP并且必须比较字符串后,我了解到在正则表达式中使用字符串比较运算符对于性能是有益的. 我完全理解一些操作必须使用正则表达式来完成复杂性,但是对于可以通过正则表达
这个问题是围绕 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开发人员正在积极地思考“性能”,其中出现了许多谣言和神话,包括像“双引号”这样的纯粹愚蠢的东西. Regexps“慢”是这些神话中的一个,不幸的是手册支持(参见preg_match页面上的臭名昭着的评论).事实是,在大多数情况下,你不在乎.除非您的代码重复10,000次,否则您甚至不会注意到字符串函数和正则表达式之间的区别.如果您的代码重复10,那么在任何情况下都必须做错,并且您将通过优化逻辑来获得性能,而不是通过剥离正则表达式.

至于可读性,正则表达式难以阅读,但是,使用它们的代码在大多数情况下更短,更简洁(在上面的链接上比较你和我的答案).

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

因此,正则表达式不是更慢,更可读和更灵活.为什么我们应该避免它们呢?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读