使用纯JavaScript从字符串中提取键值的更快方法

时间:2019-02-05 03:50:52

标签: javascript

我有一个字符串,其中包含用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函数会更快?

2 个答案:

答案 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'))