在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,
它可以包含任意数量的行,并且包含任何键和任何值。他们总是被冒号隔开。
我想将theese保存为对象的键值,并且不确定哪种方法最好。我应该做正则表达式吗?在这种情况下,我如何在正则表达式中做foreach?
答案 0 :(得分:3)
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);
现在写的时候,我觉得我已经太迟了......正则表达式似乎更好了,但这可能更容易理解......
答案 1 :(得分:1)
var t="Org nr: 9 670220-5458\n\ // you said you have linebreaks
Firma: Shamel Taxi\n\
Kommun: Botkyrka\n\
Postadress: Grytstigen 84, 147 52 TUMBA,\n\
Verksamhet: Bolaget ska bedriva taxiverksamhet.\n\
Innehavare: 19670220-5458 Fathalla, Shamel Said, Grytstigen 84, 147 5\2 TUMBA,";
var g=t.split(/[\n\u0085\u2028\u2029]|\r\n?/gim);
var o={};
for (var i=0;i<g.length;i++)
{
var g2= g[i].split(':');
o[g2[0].trim()]=g2[1];
}
console.log(o)
结果
[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."
}
答案 2 :(得分:0)
使用Regex,您将使用以下内容:
([^:]+): (.*)
反向引用组1是键,反向引用组2是值。
<强> JS:强>
result = subject.match(/([^:]+): (.*)/g);
然后您需要访问这些组,并且您拥有所需的所有内容。
答案 3 :(得分:0)
这是诀窍,你可以首先用':'拆分字符串,然后从第2个元素开始分割每个组件,得到最后一个用空格分隔的部分,并假设它是下一个键值对的名称,这个是我的尝试:
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."
同样,您可以使用此代码,因为输入太随机,这是我能给您的最好的。