2009-10-29 46 views

回答

9

我用gSkinners PerformaceTest对此进行了快速测试。我认为最好的区别是很小的。我会说replace()将是首选,纯粹是因为这是你想达到的目的。使用split().join()的意图不太清楚。

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– 
Using replace() (10000 iterations) 
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– 
method...................................................ttl ms...avg ms 
[function]             57  0.01 
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– 

–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– 
Using split().join() (10000 iterations) 
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– 
method...................................................ttl ms...avg ms 
[function]             61  0.01 
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– 
+0

感谢您运行测试 - 看起来像replace()是为了清晰起见的方式。 – Reuben 2009-10-29 20:23:12

+0

任何认为使用正则表达式的人都表明明确的意图显然对“明确”和“意图”的含义有不同的看法。正则表达式,imho,应该早已消失的“脑屁”,以及产生它们的古代语言。但那些喜欢学习克林贡的遗留代码和固执的极客们将确保它将在很长很长的一段时间内。 – unsynchronized 2016-09-19 22:01:50

2

Here's一个很好的博客文章开始。但你真的应该知道哪一个更快。

+0

阅读完该页面后,似乎替换是一条可行的路。另外它也支持正则表达式。 – Amarghosh 2009-10-29 10:01:10

+0

谢谢你 - 我刚刚重构了我所有的旧string.split()。join()。split()。join()...使用regexp的方法,并想知道是否值得所有的努力。 – Reuben 2009-10-29 10:12:11

+0

@Amarghosh:split()确实支持正则表达式:演示:在chrome控制台中尝试以下命令:'i ='alksdfjaklsdfjksaldj flskadjfòlaksdjfòlkasdjf'; i.split(/ a | f /);'它们将返回数组:** [“”,“lksd”,“j”,“klsd”,“jks”,“ldj”,“lsk”,“dj “,”òl“,”ksdj“,”òlk“,”sdj“,”“] ** – 2017-01-11 00:50:43

5

大卫R.从Dirkgently链接的博客引用:

的string.split()join()方法构造是 从AS2天吃剩的,那里 没有与string.replace()。在AS3中, 没有意义使用.split.join, 只有没有学过 新替换函数的人可能会使用 。

此外,根据该博客,时差似乎最小。所以是的,替换应该是一个更干净的方式来做到这一点。