在我们的一个应用程序中,我们有以下几行:
while (text.indexOf(' ') !== -1)
text = text.replace(' ', '_');
while (text.indexOf('*') !== -1)
text = text.replace('*', 'x');
据我所知,我也可以这样写它以避免循环:
text = text.replace(/ /g, '_');
text = text.replace(/*/g, 'x');
两个版本中的哪一个会更好的编程风格?这两者之间是否存在差异(性能,结果,错误......)?如果可能,我们是否必须避免循环?
答案 0 :(得分:3)
我注意到使用正则表达式会让新的(新鲜的/没有经验的)开发人员感到困惑。因此,他们会发现第一个选项更容易阅读并掌握它的作用。
然而,第二个选项是:
对于错误,如果你不在你的正则表达式字符串中犯任何错误,它不会抛出任何错误。具有讽刺意味的是,你做过(你应该逃避特殊字符*
)。所以,这是选择选项1的一个原因:)
text.replace(/\*/g, 'x');
答案 1 :(得分:1)
没有脑子 - 你的第二个选择。如果可以避免,请不要调用循环。 Javascript是一种函数式语言;用它!
更好的解决方案是将它们链接如下:
text = text.replace(/ /g, "_").replace(/\*/g, "x");