在我们的一个应用程序中,我们有以下几行:
while (text.indexOf(' ') !== -1)
text = text.replace(' ', '_');
while (text.indexOf('*') !== -1)
text = text.replace('*', 'x');
据我所知,我也可以这样写以避免循环:
text = text.replace(/ /g, '_');
text = text.replace(/*/g, 'x');
这两个版本中的哪个版本是更好的编程风格?两者之间有什么区别(性能,结果,错误等)吗?如果可能,我们是否必须避免循环?
解决方法:
我注意到使用正则表达式会使新的(新手/经验不足的)开发人员感到困惑.因此,他们会发现第一个选项更易于阅读和掌握其功能.
但是,第二种选择是:
>简洁明了,也易于阅读(前提是您熟悉正则表达式);
>从理论上讲,它应该更快,因为您要让本机代码完成所有繁重的工作,而不是要求它解释循环代码,而是重新分配字符串变量.但是,正则表达式有一些开销,可能会导致效率低下.但是,它不适用于现实场景,尤其是在这种情况下.
至于错误,如果您在正则表达式字符串中没有任何错误,它不会引发任何错误.具有讽刺意味的是,您做到了(应该转义特殊字符*).因此,这是选择选项1的原因之一:)
text.replace(/\*/g, 'x');