首页 > 解决方案 > 逐行读取角度文本文件

问题描述

我有这个文本文件:

"u901_humext ""2019-02-10 00:00"" 99.97 99.97 99.97"

"u901_radpar ""2019-02-10 15:40"" 1002.9 1068.4 1034.3943396226"

我想从以下行中获取数据:

name = u901_humext date = 2019-02-10 00:00 min = 99.97 avg = 99.97 max = 99.97

我有这个类的功能,但只能显示所有数据:

    export class LeerArchivoComponent implements OnInit {
      private fileText;
      private nombre:String;
      constructor() { }

      ngOnInit() {
      }

      fileUpload(event){
        var reader = new FileReader();
        reader.readAsText(event.srcElement.files[0]);
        var me = this;
        var nombre:String;
        reader.onload = function (){
          me.fileText = reader.result;     

        }
      }

和像这样的html:

    <input id="file-upload" 
      type="file" 
      accept=".txt" 
      (change)="fileUpload($event)">     
    <textarea rows="4" cols="50">{{fileText}}</textarea>

标签: angular

解决方案


将 ArrayBuffer 转换为字符串,然后尝试按以下行拆分文本:

function ab2str(buf) {
  return String.fromCharCode.apply(null, new Uint16Array(buf));
}

const text = ab2str(reader.result);
const lines = text.split(/\r?\n/);

之后,您可以用空格分隔每一行以读取每个单独的值:

lines.forEach(line => {
   const vars = line.split(' ');
   console.log(vars);
});

ab2str 源码


推荐阅读