2017-05-28 38 views
0

如果我有字符串如何用JavaScript中的正則表達式分割?

PercentageValue = 99.9,\r\nCaseID = 9745683 PercentageValue = 90.3,\r\nCaseID = 9387593 PercentageValue = 88.6,\r\nCaseID = 4893448

如何可以解析成:

[ 
    {PercentageValue : '99.9', CaseID : '9745683'}, 
    {PercentageValue : '90.3', CaseID : '9387593'}, 
    {PercentageValue : '88.6', CaseID : '4893448'} 
] 

似乎有一個空間分隔符,但問題是,有其他空間了。

感謝

+0

你想達到的JSON格式不正確。也許你會喜歡':'而不是'='? – quirimmo

+0

謝謝,修正了錯字。 – omega

回答

1

var str = 'PercentageValue = 99.9,\r\nCaseID = 9745683 PercentageValue = 90.3,\r\nCaseID = 9387593 PercentageValue = 88.6,\r\nCaseID = 4893448'; 
 
var array = str.replace(/\r\n/g, '').replace(/\s=\s/g, ':').split(' '); 
 
var objs = array.map((el) => { 
 
    return { 
 
    \t [el.split(',')[0].split(':')[0]]: el.split(',')[0].split(':')[1], 
 
    \t [el.split(',')[1].split(':')[0]]: el.split(',')[1].split(':')[1] \t 
 
    } 
 
}); 
 
console.log(objs);

0
var input = "PercentageValue = 99.9,\r\nCaseID = 9745683 PercentageValue = 90.3,\r\nCaseID = 9387593 PercentageValue = 88.6,\r\nCaseID = 4893448"; 
var res, resArray = [], re = /PercentageValue = (.*),\r\nCaseID = (\d*) ?/g; 
while (res = re.exec(input)) 
    resArray.push({PercentageValue: res[1], CaseID: res[2]}) 
1

var str = "PercentageValue = 99.9,\r\nCaseID = 9745683 PercentageValue = 90.3,\r\nCaseID = 9387593 PercentageValue = 88.6,\r\nCaseID = 4893448"; 
 
var parse = "["+str.replace(/(\w+)\s=\s(\d+(\.\d)?),\r\n(\w+)\s=\s(\d+)/g, "{\"$1\":\"$2\",\"$4\":$5}").replace(/\}\s\{/g, "},{")+"]"; 
 
console.log(JSON.parse(parse));

0

如通過其他的答案中,有幾種方法來解決這個問題。下面是.reduce()的方法:

var str = 'PercentageValue = 99.9,\r\nCaseID = 9745683 ' +  
 
      'PercentageValue = 90.3,\r\nCaseID = 9387593 ' + 
 
      'PercentageValue = 88.6,\r\nCaseID = 4893448'; 
 

 
console.log(
 
    str 
 
    .split(/ = |,?\s+/) 
 
    .reduce(
 
     function(c, v, i, a){ 
 
     return i & 3 == 3 && (c[i >> 2] = { 
 
      PercentageValue: a[i - 2], 
 
      CaseID: v 
 
     }), c 
 
     }, [] 
 
    ) 
 
)