哦,原来有个定义好的方法可以直接实现. 我写一行转换的代码.楼主参考一下.其它的调整一下就可以了.:)function getarray(str) { var str1,str2; str1=str.slice(1,str.lastIndexOf("]")) var ss=str1.split("]["); //return ss ss=ss.sort(); str2=str.slice(str.lastIndexOf("]"),str.length) for (var i=0;i<ss.length;i++) { ss[i]+=","+str2; } return ss }
最近又被迫拿起了正则表达式,所以偏激一点,对西山狼老兄的代码用正则表达式转一下: var str="[a][b][c]d"; var y= str.match(/[^\]]+$/g)[0];var s=[]; str.replace(/\[(\w+)\]/g,function (m,m1){s[s.length]=m1+","+y});function doCompare(a,b) { var keya = a.replace(/,.*/g,""); var keyb = b.replace(/,.*/g,""); return keya>keyb?1:keya==keyb?0:-1; } s.sort(doCompare);//s is the result因为先组串后排序,所以只好这么麻烦了。不过带来一点灵活性,就是可以对多行分析结果按时间统一排序。
{
str=str.slice(1,str.lastIndexOf("]"))
var ss=s.split("][");
return ss
}
第一行:[a][b][c]d
第二行:[e][f]g
目标:转化为数组
str[0]="a,d"
str[1]="b,d"
str[2]="c,d"
str[3]="e,g"
str[4]="f,g"
也就是“[]内的字符串,每行[]后面的字符串”作为数组中的一项,并最好能按照“,”前的时间进行排序(时间格式为00:00/分:秒)
我写一行转换的代码.楼主参考一下.其它的调整一下就可以了.:)function getarray(str)
{
var str1,str2;
str1=str.slice(1,str.lastIndexOf("]"))
var ss=str1.split("][");
//return ss
ss=ss.sort();
str2=str.slice(str.lastIndexOf("]"),str.length)
for (var i=0;i<ss.length;i++)
{
ss[i]+=","+str2;
}
return ss
}
var str="[a][b][c]d";
var y= str.match(/[^\]]+$/g)[0];var s=[];
str.replace(/\[(\w+)\]/g,function (m,m1){s[s.length]=m1+","+y});function doCompare(a,b)
{
var keya = a.replace(/,.*/g,"");
var keyb = b.replace(/,.*/g,"");
return keya>keyb?1:keya==keyb?0:-1;
}
s.sort(doCompare);//s is the result因为先组串后排序,所以只好这么麻烦了。不过带来一点灵活性,就是可以对多行分析结果按时间统一排序。