繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM