[英]faster way to extract key value from string using pure JavaScript
我有包含由 diff 分隔的键值的字符串。 一种字符。 我需要使用纯 JavaScript(没有像 jquery 或 ecma 5 或 6 这样的库)regx 或逻辑,可以更快地提取键值并创建 javasciprt 对象。
字符串可以如下所示,它不会那么长。主要是我可以有 2 或 3 个键值对。
“键!值~键!值”
“c!XXXXXXX~e!YYYYY~k!YYXXXX~d!” 其中“~”分隔键值和“!” 分隔键和值。 解析字符串后输出将是 {c:"XXXXXXX",e:"YYYYY",k:"YYXXXX",d:''}
Regx 是不是更快,什么可以是模式? 还是正常的 forloop 和 split 函数会更快?
您不需要使用正则表达式来分隔键值对,只需使用字符串对象的拆分功能即可。 使用代码:
const KV_SEP = "!";
const ENTITY_SEP = "~";
"c!XXXXXXX~e!YYYYY~k!YYXXXX~d!".split(ENTITY_SEP).map(function(val){
return [val.split(KV_SEP)];
});
这是正则表达式版本
function splitString(str) {
const KEY_INDEX = 1
const VALUE_INDEX = 2
const myKeyValue = {}
const myRegex = /(?:([a-z])!([a-zA-z]*)~?)/g
while(1) {
match = myRegex.exec(str)
if (match === null) break
myKeyValue[match[KEY_INDEX]] = match[VALUE_INDEX]
}
return myKeyValue
}
console.log('result:', splitString('c!XXXXXXX~e!YYYYY~k!YYXXXX'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.