2014-01-25 49 views
2

我有具有两组象下面值的字符串...使用Javascript:将字符串分割为多个阵列

12/31/13_69,01/01/14_30,01/03/14_195,01/07/14_169 

首先是一个日期,第二个是该日期的值。我基本上想从这个字符串创建2个数组(对于一个Highcharts图)。一个日期的数组,像下面值的另一个数组...

{12/31/13,01/01/14,01/03/14,01/07/14} 
{69,30,195,169} 

能否请您与我分享的Javascript代码我可以用它来创建此?拆分函数的一些变体可能?

在此先感谢。

+1

你需要用','分割,然后循环遍历结果,再用'_'分割。或者使用正则表达式。别。 –

+0

先试一试;然后寻求帮助。 – brouxhaha

回答

0

你总是可以使用regular expression

var str = '12/31/13_69,01/01/14_30,01/03/14_195,01/07/14_169', 
    dates = str.match(/\d{2}\/\d{2}\/\d{2}/g), 
    vals = str.match(/\d+(?=,|$)/g); 
+0

谢谢大家的回复,你的使者看起来是最简单的,所以我决定去用它。再次感谢! – AbuMariam

0

这将首先由逗号分割,然后使用for循环通过下划线拆分并分配所有的值以ARRAY1(包含日期)和数组2(包含日期代码)。

var ms = "12/31/13_69,01/01/14_30,01/03/14_195,01/07/14_169" 

var arr = ms.split(",") 

var array1 = new Array() 
var array2 = new Array() 

var temp = "" 

for(i=0; i<arr.length; i++) 
{ 
    temp=arr[i].split("_") 

    array1[i] = temp[0] 
    array2[i] = temp[1] 
} 
0

您可以使用RegExp.prototype.exec()找到连续比赛。

var results = { dates: [], values: [] }, 
    s = '12/31/13_69,01/01/14_30,01/03/14_195,01/07/14_169', 
    regex = /(\d{2}\/\d{2}\/\d{2})_(\d+),?/g, 
    result; 

while ((result = regex.exec(s)) !== null) { 
    results.dates.push(result[1]); 
    results.values.push(result[2]); 
}