我正在写一个网页,你可以上传文本文件,然后对文件做一些分析。
文本文件的格式如下:
“*”仅用于在堆栈溢出时列出列表,而不是在文本文件中。
我只需要提取第三列(三位数),并将值放入一个变量中,我以后可以用于分析。
我该怎么做?我似乎找不到javascript的答案。
谢谢
发布于 2020-11-19 10:17:53
以下是一种方法:
document.querySelector('#fileInput').addEventListener('change', (e) => {
readFile(e.target.files[0]);
});
function readFile(file) {
const reader = new FileReader();
reader.readAsText(file);
reader.onload = function() {
const values = reader.result.split('\n').map(line => (+line.split(' ')[2]));
console.log(values);
};
}
const fileContent = `0 1 475
1 2 437
2 3 553
3 4 500
4 5 612
5 6 491
6 7 444
7 8 544
8 9 491
9 10 595`;
const blob = new Blob([fileContent], {type: 'text/plain'});
readFile(blob);
<input id="fileInput" type="file" onchange="readFile(this.files[0])">
在本例中,我使用了一个Blob
来模拟一个文件,但是您也可以使用<input type="file" />
来使用一个真正的文件来测试函数。
这样做的目的是使用FileReader
将文件读取为文本,然后通过创建一个数组,将文件中的每一行文本作为元素(reader.result.split('\n')
),然后映射该数组以保留最后一个数字,从而解析文件的内容。这是通过将每个空白字符上的行拆分并转换为一个数字并将第三个元素保持在结果数组中来实现的(+line.split(' ')[2]
,[2]
选择第三个元素,+
将该元素转换为number
)。
发布于 2020-11-19 06:48:46
您可以这样做,其中地图函数将每个字符串转换为整数:
const input = ["0 1 475",
"1 2 437",
"2 3 553",
"3 4 500",
"4 5 612",
"5 6 491",
"6 7 444",
"7 8 544",
"8 9 491",
"9 10 595"];
const output = input.map((str) => parseInt(str.split(" ")[2]))
console.log(output);
发布于 2020-11-19 07:46:25
您可以使用正则表达式:
let str= `0 1 475
1 2 437
2 3 553
3 4 500
4 5 612
5 6 491
6 7 444
7 8 544
8 9 491
9 10 595`
let re=/\d{3}$/gm
console.log(str.match(re))
https://stackoverflow.com/questions/64906593
复制相似问题