通过字符串最有效的方法是什么;s字符
What is the most efficient way to go through string's chars in Javascript?
我看到SO上有类似的问题,但我没有找到一个符合我特定目标的问题。
我开发了一个小函数,它循环通过一个字符串(比如说10到160个字符)来提取
- 通配符(例如$1、$2…)-称为"特价"
- 它们之间的字符串
要解析的字符串示例:"word1word2$1word3$2word4$3"。
输出示例:
{
strings: [word1 word2, word3, word4],
specialChars: 3
}
当然也有限制情况(没有通配符,只有1个通配符,通配符可以在字符串的开头或结尾)。
到目前为止,我写的算法如下(在这个问题中,有一些问题需要解决,但我对效率比对结果更感兴趣):
function parsestr(str: string) {
let specialChars = [],
plaintextParts = [],
resultObject = {
strings: [],
specialChars: 0
};
// convert to char array and loop
str.split('').forEach(function(c, i){
if (c=='$') specialChars.push(i);
});
resultObject.specialChars = specialChars.length;
// extract plain text parts
if (specialChars.length == 0) return resultObject;
// part before first wildcard
if (specialChars[0]>0) plaintextParts.push(str.substr(0, specialChars[0]-1));
// 2..N
for (var i=1; i<specialChars.length-1; i++) {
plaintextParts.push(str.substr(specialChars[i-1]+2, specialChars[i]-1));
}
// last part
if (specialChars[specialChars.length-1]+1 < str.length-1)
plaintextParts.push(str.substr(specialChars[specialChars.length-2]+2, specialChars[specialChars.length-1]-1));
resultObject.strings = plaintextParts;
return resultObject;
}
// call function and print output
var jsonString = "word1 word2 $1 word3 $2 word4 $3";
console.log(JSON.stringify(parseJsonString(jsonString)));
您只需使用正则表达式:
let str = "word1 word2 $1 word3 $2 word4 $3";
let regex = /'$[0-9]/;
let strSplit = str.split(regex);
console.log(JSON.stringify(strSplit)); // ["word1 word2 ", " word3 ", " word4 ", ""]
如果你不想要最后一个空字符串,你总是可以把它去掉
因此,如果你想要"特殊字符"的数量,你可以取结果strSplit
的长度,减去一。
就效率而言,这似乎是一个微观优化,尤其是对于长度不超过160个字符的字符串。使代码以干净、易懂的方式工作比优化每个操作的效率更重要。
在优化代码时,请尝试提高通用解决方案的效率,然后再优化细节。假设这个功能不存在于真空中,那么在优化字符串操作之类的东西之前,试着关注应用程序本身的性能,找出实际的性能瓶颈在哪里。
相关文章:
- 匹配某个字符后所有文本的正则表达式是什么
- 逃离这些字符的目的是什么?[来自Javascript和JQuery书]
- 带有前导散列字符的ajax提交的目的是什么
- 使用JS找出字符串中字符重复的最简单方法是什么
- 通过字符串最有效的方法是什么;s字符
- 在Javascript中下划线字符(_)的用途是什么
- 将字符串解析为一系列转义十六进制字符的方法是什么
- 在MySQL,PHP或一般情况下排序时字符的优先级是什么
- jQuery中的“#”字符(数字符号)是什么意思?
- 对 URI 组件非 utf-8 字符进行编码并相应地解码它们的正确方法是什么
- 在 JavaScript 字符串数组中获取相邻字符的最佳方法是什么?
- JavaScript中(字符空间字符)或(空格字符空格)的表达式是什么
- AngularJS中$interpolate内字符串的转义字符是什么
- 如何检查什么是相邻字符
- 用于删除两个“”之间的字符的正则表达式是什么/"在javascript中
- 字符||在JavaScript中的变量声明中的作用是什么
- 在JavaScript中创建一个每字符N次的字符串的最有效方法是什么
- 从JSON元素的内容构造URL以避免输出中出现编码字符的正确方法是什么?
- 从大括号内替换字符的有效方法是什么
- 从集合中构建字符分隔字符串的好方法是什么