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

问题描述 投票:-2回答:2

我有包含由diff分隔的键值的字符串。那种人。我需要使用纯JavaScript(没有lib,如jquery或ecma 5或6)regx或更快提取键值并创建javasciprt对象的逻辑。

string可以如下所示,它不会那么长。通常我可以有2或3个键值对。

“关键!值〜键!值”

“C!XXXXXXX〜ê!YYYYY〜ķ!YYXXXX〜d!”其中“〜”在键值和“!”之间分开在键和值之间分开。解析后的字符串将是{c:“XXXXXXX”,e:“YYYYY”,k:“YYXXXX”,d:''}

正则表达式是更快,什么可以模式?或正常的循环和分割功能会更快?

javascript
2个回答
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)];
});

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'))
© www.soinside.com 2019 - 2024. All rights reserved.