簡體   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