如何从字符串中提取子字符串并将其存储为键值对

时间:2020-07-16 11:20:43

标签: javascript javascript-objects

var txt = "af86abf7-89b5-40f6-9099-5228f72aea88\t3984088\t` Jack Bob \t1\
t35631407838\t\t19650098\têdce27f38-07b7-40f4-b64a-a6bc8814fcb7\t4101111\t`  JOHN MAROTI \t1\
t829234079446\t\t19600101\tê0b9a12ba-9b7c-484e-84bf-d75fcb18aa66\t2955999\t` BAYANABAI BUIPJ\t1
\t\t\t0\tê1795bec6-e28e-4749-a528-0d9a6082ca99\t2664383\t`JASON ASHOK MLOAP\t1\t\t\
t0\têada976ea-02f4-41f1-a1ec-397288dea7hh\t2569898\t`WILLY DHANRAJ AABJK\t2\t\t\t0";

我只想从字符串上方提取名称(例如:“ Jack Bob”和“ JOHN MAROTI”)和特定数字(“ t984088”和“ t4101111”),并将它们另存为键值对。

示例: KEY = 3984088,VALUE =杰克·鲍勃(Jack Bob),来自字符串的以下部分:

af86abf7-89b5-40f6-9099-5228f72aea88\t3984088\t` Jack Bob \t1\
t35631407838\t\
   

2 个答案:

答案 0 :(得分:1)

至少有两种方法可以执行此操作:通过替换

var pairs = {};
txt.replace(/\t(\d+)\t`([^\t]+?)\t/g, (_, key, value) => {
  pairs[key] = value.trim();
});
console.log(pairs);

或通过实用程序/帮助程序

function asKeyValuePairs(txt) {
  var re = /\t(\d+)\t`([^\t]+?)\t/g;
  var pairs = {};
  while (re.test(txt))
    pairs[RegExp.$1] = RegExp.$2.trim();
  return pairs;
}

其中asKeyValuePairs(txt)将返回所需的对象。

随意创建.trim()值。

答案 1 :(得分:0)

您可以使用以下正则表达式:/([0-9]+).?`.?([a-zA-Z ]+)/g 这将匹配所有名称,密钥对。

我建议使用网站Regex101来帮助创建这样的正则表达式。

Live Code Example