通过ajax得到csv文件的内容,想将每一行数据按照tab符号进行分割,得到每一个项目的内容。
现在遇到一个问题,如果csv文件中某一项内容为空,那么就会出现连续的tab符号。但是在IE下,split(/\t/g)之后,会把几个连续的tab符号当做一个tab符号进行分割,这样得到的项目数就比定义的要少,项目的位置也会发生错位。csv文件的分隔符只能用tab,这个是既存系统中已经定义好的,无法修改用逗号当做分隔符。请问如何解决这种情况。

解决方案 »

  1.   

    无法用正则分割解决了,只能循环找到tab来substring处理了。
        function getDataRows(text){
            var sepChar = '\t';
            var dataRows = new Array();        if(text == '') {
                return dataRows;
            }        var arr = text.split(/\r\n/g);
            if(arr.length == 0) {
                return dataRows;
            }        for (var i=0; i<arr.length; i++) {
                if(arr[i] == '') {
                    continue;
                }
                dataRows[i] = new Array();
                var j = 0;
                var tabIndex = 0;
                while (tabIndex > -1) {
                    tabIndex = arr[i].indexOf(sepChar);
                    if(tabIndex > -1){
                        dataRows[i][j] = arr[i].substring(0, tabIndex);
                        arr[i] = arr[i].substring(tabIndex+1);
                        j++;
                    }
                    else {
                        dataRows[i][j] = arr[i];
                    }
                }
            }        return dataRows;
        }
      

  2.   

    直接split字符就好了啊,干嘛用正则?alert('\t\t\t\t\t'.split('\t').length)
      

  3.   

    csv文件的一行中没有\t这样的字符串啊,只有tab符号,难道不用正则分割吗?
      

  4.   

    获取的内容tab在js中就是\t啊。。