# format data

----

format data

----

## 格式化数据

<p>
  <textarea id="data" cols="50" rows="10"></textarea><br>
</p>

<p>
 <textarea id="rst" cols="50" rows="10"></textarea>
</p>

<p id="log"></p>
<p>
  <button id="btn" class="btn">转化</button>
</p>


<script src="http://g.tbcdn.cn/fi/bui/jquery-1.8.1.min.js?nowrap"></script>


<script>

    function isNumberic(value){
      return !isNaN(parseFloat(value)) && isFinite(value);
    }
    
    function log(msg){
      $('<span>' + msg + '</span><br/>').appendTo($('#log'));
    }
    function format (str) {
      var lines = str.split('\n'),
        rst = [],
        firstLine = lines[0],
        secondLine = lines[1],
        r = /(\s+)|(,)/g,
        sp = /[,\s]/,
        rexp = /"([^\s"]+)\s+([^\s"]+)"/g,
        names;
      if(firstLine){
        firstLine = firstLine.replace(rexp,'"$1-$2"').replace(/"/g,'')
        names = firstLine.split(sp);
      }
      if(secondLine){
        var values = secondLine.split(sp);
        if(values.length == names.length + 1){
          names.unshift('name');
        }
      }
      for(var i = 1; i<lines.length; i++){
        var line = lines[i];
        line = line.replace(rexp,'"$1-$2"');
        var  sub = line.split(sp),
          obj = {};
        if(sub.length > names.length){
          log('line :' + i + ' has a conflict!!');
        }
        for(var j= 0;j<names.length;j++){
          var value = sub[j];
          value = value && value.replace(rexp,'"$1-$2"').replace(/"/g,'');
          value = isNumberic(value) ? parseFloat(value) : value;

          obj[names[j]] = value;
        }
        rst.push(obj);
      }
      return rst;
    }
    $('#btn').on('click',function  () {
      var str = $('#data').val();


      var rst = format(str);
      $('#rst').val(JSON.stringify(rst));

    });
</script>