[英]Javascript: Read text file into a matrix
我想读取带有数字的文本文件,然后使用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
放入matrix [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单词后的数字
那有可能吗?
假设每一行数据都在新行上,并且每个数据值都用一个空格分隔:
更新后的示例将仅添加出现在keyword
行之后的值。 仅记录包含两个以上字段的行。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.