使用正则表达式拆分字符串

时间:2016-11-23 05:01:54

标签: javascript angular typescript split

我需要拆分一个动态字符串。字符串可能看起来像下面的Code,Name和EffectDate。或者它可能只有(代码和名称)或(代码和效果日期)或(名称和效果日期)。你明白了。

{"Code":{"value":"1"},"Name":{"value":"Entity1"},"EffectDate":{"value":"23/11/2016"}}

...
this.data[0].key ='Code'; \\something like this (desired result) 
this.data[0].value = '1';
this.data[1].key = 'Name';
this.data[1].value = 'Entity1';
this.data[2].key = 'EffectDate'; 
this.data[2].value = '23/11/2016';

我在代码中做了什么:

...
filters:string;
data:string[];
...
this.data = this.filters.split("\b(?:(?!value)\w)+[a-zA-Z0-9/]\b");
console.log(this.data);

我使用了这种模式 \ b(?:(?!value)\ w)+ [a-zA-Z0-9 /] \ b ,但仍然无法获得所需的结果。 this.filter始终只返回一个具有相同字符串的数组。任何意见将是有益的。谢谢。

更新#1:

我正在使用数据表的PrimeNg扩展,我将事件作为参数。在那里,event.filters返回一个过滤器对象列表。我无法将对象发送到服务,它需要采用与服务一起使用的格式。

enter image description here

1 个答案:

答案 0 :(得分:1)

看起来像JSON。有什么阻止您执行data = JSON.parse(content)并使用keys(data)为密钥和data[i]["value"]为值迭代键值?

尝试这样的事情:

var data = [];
for(var i in event.filters){
  data.push({"key": i, "value": event.filters[i].value});
}