我有一个字符串,其中包含用diff分隔的键值。一种字符。 我需要使用纯JavaScript(没有像jquery或ecma 5或6这样的库)regx或更快地提取键值并创建javasciprt对象的逻辑。
string可以如下所示,并且不会太长。通常我可以有2或3个键值对。
“键!值〜键!值”
“ c!XXXXXXX〜e!YYYYY〜k!YYXXXX〜d!”其中“〜”在键值和“!”之间分隔 在键和值之间分隔。 解析字符串后输出 {c:“ XXXXXXX”,e:“ YYYYY”,k:“ YYXXXX”,d:''}
Regx更快并且可以作为模式吗? 还是普通的forloop和split函数会更快?
答案 0 :(得分:0)
您无需使用正则表达式来分隔键值对,只需使用字符串对象的拆分功能即可。使用代码:
const KV_SEP = "!";
const ENTITY_SEP = "~";
"c!XXXXXXX~e!YYYYY~k!YYXXXX~d!".split(ENTITY_SEP).map(function(val){
return [val.split(KV_SEP)];
});
答案 1 :(得分:0)
这是正则表达式版本
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'))