Javascript 将列表拆分为键值?

Javascript 将列表拆分为键值?,javascript,jquery,Javascript,Jquery,在jquery中,我抓取了一个如下所示的文本字符串: Org nr: 9 111222-3333 Firma: Company Name Kommun: Botkyrka Postadress: SomeRoad 84, 147 52 TUMBA, Verksamhet: Bolaget ska bedriva taxiverksamhet. Innehavare: 11111111-1111 Surname, Name Name, SomeRoad 84, 147 52 TUMBA, 它可以

在jquery中,我抓取了一个如下所示的文本字符串:

Org nr: 9 111222-3333
Firma: Company Name
Kommun: Botkyrka
Postadress: SomeRoad 84, 147 52 TUMBA,
Verksamhet: Bolaget ska bedriva taxiverksamhet.
Innehavare: 11111111-1111 Surname, Name Name, SomeRoad 84, 147 52 TUMBA,
它可以包含任意数量的行,并具有任意键和任意值。它们总是用冒号分隔


我想将see保存为对象的键值,但不确定哪种方法最好。我应该做正则表达式吗?在这种情况下,如何在regex中执行foreach?

使用regex您将使用以下命令:

([^:]+): (.*)
反向参考组1是键,反向参考组2是值

JS:

result = subject.match(/([^:]+): (.*)/g);
然后,您只需访问这些组,就可以获得所需的所有内容。

Ehuem

var text = '...';
var obj = {};
var rows = text.split('\n');
for (var i=0; i<rows.length; i++) {
    var arr = rows.split(':');
    obj[arr[0]] = arr[1];
}

console.log(obj);
var text='…';
var obj={};
var rows=text.split('\n');
对于(var i=0;i


这里是诀窍,您可以先按“:”拆分字符串,然后从第二个元素开始对每个组件进行拆分,以空格分隔最后一部分,并假设这是下一个键值对的名称,这是我的尝试:

var string = "Org nr: 9 670220-5458 Firma: Shamel Taxi Kommun: Botkyrka Postadress: Grytstigen 84, 147 52 TUMBA, Verksamhet: Bolaget ska bedriva taxiverksamhet. Innehavare: 19670220-5458 Fathalla, Shamel Said, Grytstigen 84, 147 52 TUMBA,;"

splited = string.split(':');
list = [splited[0]]
for (x in splited) {
    if (x == 0) continue;
    var t = splited[x].split(' ');
    list.push(t.slice(0, t.length - 1).join(' ').trim());
    list.push(t[t.length - 1].trim());
}

result = {}
for (var i = 0; i < list.length - 1;) {
    result[list[i]] = list[i + 1];
    i += 2;
}

console.log(result);

同样,您可以使用这段代码,因为输入太随机,这是我能给您的最好的结果。

这在正则表达式中很容易做到,但是当键和值并排时很难将它们分开,因为似乎没有任何东西将它们分开。不管怎样,现在它是通过换行分隔的;另外,在发布时请小心请在您的问题中删除个人数据:)分线、循环、首先拆分
:“
@PaulS。如何在换行符处拆分?我认为注释中的字符串拆分解决方案似乎更实用,不过感谢您提供了广泛的答案!英雄联盟完全相同的答案:)@莱昂纳多·保利·耶普……:-)
[object Object] {
  Firma: " Shamel Taxi",
  Innehavare: " 19670220-5458 Fathalla, Shamel Said, Grytstigen 84, 147 5 TUMBA,",
  Kommun: " Botkyrka",
  Org nr: " 9 670220-5458",
  Postadress: " Grytstigen 84, 147 52 TUMBA,",
  Verksamhet: " Bolaget ska bedriva taxiverksamhet."
}
var string = "Org nr: 9 670220-5458 Firma: Shamel Taxi Kommun: Botkyrka Postadress: Grytstigen 84, 147 52 TUMBA, Verksamhet: Bolaget ska bedriva taxiverksamhet. Innehavare: 19670220-5458 Fathalla, Shamel Said, Grytstigen 84, 147 52 TUMBA,;"

splited = string.split(':');
list = [splited[0]]
for (x in splited) {
    if (x == 0) continue;
    var t = splited[x].split(' ');
    list.push(t.slice(0, t.length - 1).join(' ').trim());
    list.push(t[t.length - 1].trim());
}

result = {}
for (var i = 0; i < list.length - 1;) {
    result[list[i]] = list[i + 1];
    i += 2;
}

console.log(result);
Firma: "Shamel Taxi"
Innehavare: "19670220-5458 Fathalla, Shamel Said, Grytstigen 84, 147 52"
Kommun: "Botkyrka"
Org nr: "9 670220-5458"
Postadress: "Grytstigen 84, 147 52 TUMBA,"
Verksamhet: "Bolaget ska bedriva taxiverksamhet."