|
|
1
6
我已经对您的原始版本、Ates Gorals哈希、我的改进哈希、使用switch的版本和简单解决方案进行了基准测试。获胜者?简单的解决方案! 具有匹配数据(由85个字符组成的字符串)
使用不匹配的数据(85个字符的字符串):
(在我的Windows xp笔记本电脑上测试,1.7GHz,ymmv) 简单的解决方案是:
首先,检查是否有反斜杠或符号(在所有浏览器中使用indexOf而不是regexp会更快)。如果没有,字符串将原封不动地返回,否则将执行所有替换。在这种情况下,缓存regexp没有多大区别。我尝试使用两个数组,一个使用regexp,另一个使用replacement,但差别不大。
我通过将散列对象移到外部(因此不会为每次调用内部函数创建并丢弃散列对象),将内部函数移到外部,以便可以重用而不是丢弃散列对象,从而改进了内部函数。 更新1 错误修正:在“与”测试中移动了一个括号。
您的一条评论让我相信您自己对字符串进行了编码,如果是这样,我建议您将编码转换为标准编码,这样您就可以使用内置函数。 使用“%xx”代替“\dd”,其中dd是十进制数,其中xx是十六进制数。然后,您可以使用内置的decodeURIComponent,它速度更快,而且还可以解码任何字符,包括unicode。
.
因此,您没有像“\09test\60\34string\34\62\13\10\”这样的字符串,而是像“%09test%3c%22string%22%3e%0d%0a”这样的字符串。 |
|
|
2
6
您可以使用哈希查找:
或者您坚持要扩展原型:
使现代化
然后将其用作:
|
|
|
3
2
下面是我对重构代码的尝试
这是密码
|
|
|
DotFX · RegEx捕获关键字前但括号后的所有内容 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |
|
|
iato · 确保正则表达式不从命名材料中的数字中提取 1 年前 |
|
|
vr8ce · 非成对标记中特定字符的正则表达式 1 年前 |
|
|
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 1 年前 |
|
|
Carsten · 使用最近的搜索模式更改文本块 1 年前 |