制表符分隔文本文件到javascript中的数组

时间:2017-02-10 07:26:38

标签: javascript arrays

我有一个文本文件,其中包含多个数据格式:

1 2016-01-01 17:23:24 0 0 1 1
2 2016-02-01 07:15:23 0 0 2 1
1 2016-03-01 12:13:24 0 0 1 1
3 2016-04-02 13:34:19 0 0 3 1
.....

代码:

<table>
<tr>
  <td colspan="2" style="font-weight:bold;">
    Upload time sheet for yards with biometrics
  </td>
</tr>
<tr>
  <td colspan="2" style="font-weight:bold;">
    <input type="file" name="fileUpload" id="fileUpload" size="40">
  </td>
</tr>
<tr>
  <td colspan="2" >
    &nbsp;
  </td>
</tr>
<tr>
  <th>Date From:</th><th>Date To:</th>
</tr>
<tr>
  <td><input type="date" id="from_date"></td><td><input type="date" id="to_date"></td>
</tr>
  <td colspan="2" align="right">
    <input type="button" value="Process File" id="btn_process_file" onclick="Upload()">
  </td>
</table>

我需要在文件的每一行上获取某些值以放置在数组中。我只需要前3个&#34;值&#34;对于数组中的每一行。根据我上面的示例,我只需要:

1 2016-01-01 17:23:24
2 2016-02-01 07:15:23
1 2016-03-01 12:13:24

制作如下数组:

var x = [[1,2016-01-01,17:23:24][2,2016-02-01,07:15:23][1,2016-03-01,12:13:24]]

3 个答案:

答案 0 :(得分:0)

您还可以将输入文件用于<input type="file" accept='text/plain' onchange='readText(this)'/>

等文件

因此您可以使用文件阅读器获取所选文件的内容:

function readText(filePath) {
        var output = ""; 
        if(filePath.files && filePath.files[0]) {           
            reader.onload = function (e) {
                output = e.target.result;
                displayContents(output);
            };
            reader.readAsText(filePath.files[0]);
            var result = output.split("\t");
            console.log(result);
        }
}


var result = output.split("\t");

将您的字符串拆分为数组。按标签划分。

您还可以在系统上的文件上创建GET-Request。

如果你不使用jquery,请选择:

var file = "file://your path"
var toread= new XMLHttpRequest();
toread.open("GET", file, false);
toread.onreadystatechange = function ()
{
    if(toread.readyState === 4)
    {
        if(toread.status === 200 || toread.status == 0)
        {
            var allText = toread.responseText;
        }
    }
}
toread.send(null);
var result = allText.split("\\n");

使用jquery会让它更容易一些:

$.get('file://your path', function(allText ) {
   var result = (allText.split("\\n");
}, 'text')

答案 1 :(得分:0)

你可以这样使用它。

     $.get('file://your path', function(allText ) {
   var result = allText.split("\t");
  //and access them with index value like this
   alert(result.1);
});

答案 2 :(得分:-1)

function Upload(){
    var files = document.getElementById('fileUpload').files;

    if(files.length){
        var file = files[0]; // first
        var reader = new FileReader();
        reader.onload = onReadFile;
        reader.onerror = onError;
        reader.readAsText(file);
    }
}

function onReadFile(file){
    var txt = file.target.result;
    var list = txt.split('\n');
    var result = list.map(function(item){
        return item.split(' ');
    });

    console.log(result);
}


function onError (){
    //**//
}