zoukankan      html  css  js  c++  java
  • javascript 解析csv 的function

    function CSVToArray( strData, strDelimiter,rowstoread ){
            // Check to see if the delimiter is defined. If not,
            // then default to comma.
            strDelimiter = (strDelimiter || ",");
    
            // Create a regular expression to parse the CSV values.
            var objPattern = new RegExp(
                    (
                            // Delimiters.
                            "(\\" + strDelimiter + "|\\r?\\n|\\r|^)" +
    
                            // Quoted fields.
                            "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +
    
                            // Standard fields.
                            "([^\"\\" + strDelimiter + "\\r\\n]*))"
                    ),
                    "gi"
                    );
    
    
            // Create an array to hold our data. Give the array
            // a default empty first row.
            var arrData = [[]];
    
            // Create an array to hold our individual pattern
            // matching groups.
            var arrMatches = null;
    
    
            // Keep looping over the regular expression matches
            // until we can no longer find a match.
            var numread = 0;
            while (arrMatches = objPattern.exec( strData )){
                    
                    // Get the delimiter that was found.
                    var strMatchedDelimiter = arrMatches[ 1 ];
    
                    // Check to see if the given delimiter has a length
                    // (is not the start of string) and if it matches
                    // field delimiter. If id does not, then we know
                    // that this delimiter is a row delimiter.
                    if ( strMatchedDelimiter.length && (strMatchedDelimiter != strDelimiter)){
                            numread++;
                            if (rowstoread && rowstoread == numread) break;
                            // Since we have reached a new row of data,
                            // add an empty row to our data array.
                            arrData.push( [] );
    
                    }
    
    
                    // Now that we have our delimiter out of the way,
                    // let's check to see which kind of value we
                    // captured (quoted or unquoted).
                    if (arrMatches[ 2 ]){
    
                            // We found a quoted value. When we capture
                            // this value, unescape any double quotes.
                            var strMatchedValue = arrMatches[ 2 ].replace(
                                    new RegExp( "\"\"", "g" ),
                                    "\""
                                    );
                                    
                            
    
                    } else {
    
                            // We found a non-quoted value.
                            var strMatchedValue = arrMatches[ 3 ];
    
                    }
                    
    
                
    
                    // Now that we have our value string, let's add
                    // it to the data array.
                    arrData[ arrData.length - 1 ].push( strMatchedValue );
                    
                    
            }
    
            // Return the parsed data.
            return( arrData );
    }
  • 相关阅读:
    perl 模拟curl 发送json数据
    perl put 发送数据
    8小时浓度均值即连续8个小时浓度的平均值
    awk 字段匹配
    rsyslog imfile配置
    EasyUI datetimebox 的onchange事件的问题
    5大领先的商业智能解决方案,国产上榜!
    5大领先的商业智能解决方案,国产上榜!
    perl post 带中文名字的文件
    Openstack 实现技术分解 (2) 虚拟机初始化工具 — Cloud-Init & metadata & userdata
  • 原文地址:https://www.cnblogs.com/EasonSun/p/2617896.html
Copyright © 2011-2022 走看看