还有,它的每行是这样的:
[a][b][c]ddddd
其中[*]的个数不定,
如何提取每个[*]中的字符

解决方案 »

  1.   

    嗯.赞成function getarray(str)
    {
    str=str.slice(1,str.lastIndexOf("]"))
    var ss=s.split("]["); 
    return ss
    }
      

  2.   

    谢谢!再进一步请教:
    第一行:[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/分:秒)
      

  3.   

    哦,原来有个定义好的方法可以直接实现.
    我写一行转换的代码.楼主参考一下.其它的调整一下就可以了.:)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
    }
      

  4.   

    xishanlang2001(西山狼2000)还没有试用你的代码,我自己已经搞定了,不过还是要谢谢你
      

  5.   

    最近又被迫拿起了正则表达式,所以偏激一点,对西山狼老兄的代码用正则表达式转一下:
    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因为先组串后排序,所以只好这么麻烦了。不过带来一点灵活性,就是可以对多行分析结果按时间统一排序。