- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这个问题是围绕 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/
我有六个字符串变量,即 str11、str12、str13、str21、str21 和 str23。 我需要比较这些变量的组合。 我必须检查的组合是 str11 -- str12 -- str13 作
场景:我为各自的“节头”(存储为字符串)执行了一些任务,该任务的结果必须针对相同的相应“现有节头”(存储为字符串)保存 如果相应任务的“Section Header”是“现有 Section Head
我创建了一个类如下: public class StringMatch { public int line_num; public int num_of_words; } 我已经创建了一个
有没有人在使用 Pandas 时解决了这个 pylint 问题? C:525,59: Comparison to True should be just 'expr' or 'expr is True
关注 Arthur's suggestion ,我换了我的Fixpoint相互的关系 Inductive关系“建立”了游戏之间的不同比较,而不是“深入研究”。 但现在我收到一条全新的错误消息: Err
计算机如何执行值相等比较?它是否从最小的位开始逐位比较值,并在遇到两个不同的位时停止?还是从最高位开始?无论在何处/何时找到两个不同的位,它都会遍历所有位吗? 最佳答案 当您用高级语言(例如 c)编写
在这个例子中, > (= 1 1) #t > (= 'a 'a) *** ERROR IN (console)@2.1 -- (Argument 1) NUMBER expected (= 'a 'a
这是我的一个个人项目,我不知道从哪里开始,因为它远远超出了我的舒适区。 我知道有一些语言学习软件可以让用户记录他或她的声音并将发音与该语言的母语者进行比较。 我的问题是,如何实现这一目标? 我的意思是
我需要比较使用相同的编译器/标志进行编译的2个可执行文件和/或共享对象,并确认它们没有更改。我们在一个受监管的环境中工作,因此对于准确地确定可执行文件的哪些部分已发生更改,对于进行测试非常有用。 由于
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我有两个字符缓冲区,我正在尝试比较它们的一部分。我有一个奇怪的问题。我有以下代码: char buffer1[50], buffer2[60]; // Get buffer1 and buffer2
问题的澄清/总结——我们正在寻找: 托管错误跟踪系统, 使用起来和 lighthouse/github/launchpad 一样方便, 可以处理附件, 集成电子邮件通知和操作(在提交消息中隐含操作),
我相信 Stackoverflow 上有很多软件测试工程师、算法验证工程师。有人可以告诉我在以下情况下如何进行。 假设我们有一个乳房 X 线照片和 5 种不同的算法,这些算法将这个乳房 X 光照片作为
我已经开始阅读Algorithms了,我一直想知道,当处理相同类型的基元时,哪个是更昂贵的操作,赋值或比较?语言之间的差异是否很大? 最佳答案 微观优化几乎总是错误的做法。除非程序运行太慢,否则不要启
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 去年关闭。 Improve this
我在这里看到了一些与确定文件相似性相关的问题,但它们都与特定域(图像、声音、文本等)相关联。作为解决方案提供的技术需要了解所比较文件的基础文件格式。我正在寻找的是一种没有此要求的方法,其中可以比较任意
我需要比较两个 var -> integer 形式的规则列表,以了解不匹配的情况。 判断是否存在lhs相同而rhs不同的规则。 例如: {a->3, b->1, c->4} ~ ??? ~ {a->3
我看到了 MEF 和 Lua 之间的相似之处。两者都允许您注册方法并根据需要进行部署。 MEF 和 Lua 都是 IoC/依赖注入(inject)的形式吗? 最佳答案 我假设您了解这些技术之间的巨大差
我找到了 Digital persona Finger FX 开源项目,它允许我提供指纹图像(位图)并将指纹细节数据保存在 ISO/IEC 19794-2:2005 中 格式。 https://git
ImageMagick库中是否有任何相等谓词函数?我想比较两个图像,并找出它们是否完全相同(像素的所有颜色都相同)或有什么不同。 我环顾四周,但似乎没有这样的功能。我应该自己使用像素迭代器编写函数吗?
我是一名优秀的程序员,十分优秀!