2016-04-25 61 views
0

我想閱讀與數字的文本文件,並使用將它們放到一個矩陣的JavaScript的Javascript:讀取文本文件轉換成一個矩陣

我知道如何加載,並讀取該文件,甚至表現出與內容警覺,但我不知道如何將內容放入矩陣。我一直在使用FileReader API

我的想法是讓數字與Babylon.js使用,所以我可以積點到畫布

另外一個問題是,我想跳過很多線路,並開始從一個確切的詞來讀取,甚至可能在JavaScript上?

編輯:

<input type="file" id="fileinput" /> 
<script type="text/javascript"> 
    if (window.File && window.FileReader && window.FileList && window.Blob) { 
     function readSingleFile(evt) { 
      var f = evt.target.files[0]; 

      if (f) { 
       var r = new FileReader(); 
       var contents = 'empty'; 
       r.onload = function(e) { 
        contents = e.target.result; 
        alert("File loaded:" + f.name + "\n"); 
        alert(contents); 
       } 
      r.readAsText(f); 
      } else { 
       alert("Failed"); 
      } 
     } 

     document.getElementById('fileinput').addEventListener('change', readSingleFile, false); 
    } else { 
     alert('The File APIs are not fully supported by your browser.'); 
    } 
</script> 

讀取文件後,我希望把這些數字:

2.50000000000000E+0002 -2.00000000000000E+0002 2.00000000000000E+0001 3.09941176470588E+0002 -1.59941176470588E+0002 8.58823529411765E+0001 0.00000000000000E+0000 0.00000000000000E+0000 1.00000000000000E+0000 

到矩陣[X] [9],其中X是多少文件中的行。

第一六個數字表示在畫布座標(X,Y,Z),最後三個表示對象顏色

編輯2: 從@NOBrien 請求的文件基本上是等這樣的:

NUM_GRUPOS 1 
[GRUPO] 
TAM 64 
[PONTOS] 
ROTULO 1 
2.50000000000000E+0002 -2.00000000000000E+0002 2.00000000000000E+0001 0.00000000000000E+0000 0.00000000000000E+0000 1.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 
ROTULO 2 
3.54000000000000E+0002 -2.52000000000000E+0002 3.90000000000000E+0002 1.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 0.00000000000000E+0000 
... //A bunch of other numbers 
[ARESTAS] 
TAM 60 
2.50000000000000E+0002-2.00000000000000E+0002 2.00000000000000E+0001 3.09941176470588E+0002-1.59941176470588E+0002 8.58823529411765E+0001 0.00000000000000E+0000 0.00000000000000E+0000 1.00000000000000E+0000 

我想跳過所有這些第一線,開始從閱讀[ARESTAS]關鍵字,我還需要獲得數船尾呃字TAM

這是甚至可能嗎?

+0

向我們展示你迄今爲止編寫的代碼。 –

+0

你說的矩陣是什麼? – dandavis

+0

@dandavis文本文件有很多數字,我想把它們放到一個矩陣[x] [9]中,其中x是文本文件的行數 – brunex92

回答

0

假設數據的每一行是在新的一行,並且每個數據值由一個空格分隔:

更新示例只會增加出現keyword行之後發生的值。只記錄包含多於2個字段的行。

var matrix = []; 
var keyWord = '[ARESTAS]'; 
if (window.File && window.FileReader && window.FileList && window.Blob) { 
    function readSingleFile(evt) { 
     var f = evt.target.files[0]; 

     if (f) { 
      var r = new FileReader(); 
      var contents = 'empty'; 
      r.onload = function(e) { 
       contents = e.target.result; 
       var pastKey = false; 
       contents.split('\n').forEach(function(line, i) { 
        if (pastKey) { 
        var vals = line.trim().split(' '); 
        if (vals.length > 2) { 
         matrix.push(vals); 
        } 

        } 
        if (line.trim() === keyWord) { 
        pastKey = true; 
        } 

       }) 
      } 
     r.readAsText(f); 
     } else { 
      alert("Failed"); 
     } 
    } 

    document.getElementById('fileinput').addEventListener('change', readSingleFile, false); 
} else { 
    alert('The File APIs are not fully supported by your browser.'); 
} 

Codepen:http://codepen.io/nobrien/pen/ONodwO

+0

該工作真的很好,但在這種情況下,我在實際數字之前有一些相同的文本信息,我怎麼能跳過這些信息並開始讀取文件並將數字放入確定的關鍵字的矩陣中? – brunex92

+0

你可以給出關於關鍵字的一行數據的樣本嗎? – NOBrien

+0

看看EDIT2 – brunex92