我有包含由diff分隔的键值的字符串。那种人。我需要使用纯JavaScript(没有lib,如jquery或ecma 5或6)regx或更快提取键值并创建javasciprt对象的逻辑。
string可以如下所示,它不会那么长。通常我可以有2或3个键值对。
“关键!值〜键!值”
“C!XXXXXXX〜ê!YYYYY〜ķ!YYXXXX〜d!”其中“〜”在键值和“!”之间分开在键和值之间分开。解析后的字符串将是{c:“XXXXXXX”,e:“YYYYY”,k:“YYXXXX”,d:''}
正则表达式是更快,什么可以模式?或正常的循环和分割功能会更快?
您不需要使用正则表达式来分隔键值对,只需使用字符串对象的拆分功能即可。使用代码:
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'))