首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Java脚本(JS)从文本(txt)文件中提取特定值

使用Java脚本(JS)从文本(txt)文件中提取特定值
EN

Stack Overflow用户
提问于 2020-11-19 06:40:39
回答 3查看 423关注 0票数 0

我正在写一个网页,你可以上传文本文件,然后对文件做一些分析。

文本文件的格式如下:

  • 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

“*”仅用于在堆栈溢出时列出列表,而不是在文本文件中。

我只需要提取第三列(三位数),并将值放入一个变量中,我以后可以用于分析。

我该怎么做?我似乎找不到javascript的答案。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2020-11-19 10:17:53

以下是一种方法:

代码语言:javascript
运行
复制
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);
代码语言:javascript
运行
复制
<input id="fileInput" type="file" onchange="readFile(this.files[0])">

在本例中,我使用了一个Blob来模拟一个文件,但是您也可以使用<input type="file" />来使用一个真正的文件来测试函数。

这样做的目的是使用FileReader将文件读取为文本,然后通过创建一个数组,将文件中的每一行文本作为元素(reader.result.split('\n')),然后映射该数组以保留最后一个数字,从而解析文件的内容。这是通过将每个空白字符上的行拆分并转换为一个数字并将第三个元素保持在结果数组中来实现的(+line.split(' ')[2][2]选择第三个元素,+将该元素转换为number)。

票数 1
EN

Stack Overflow用户

发布于 2020-11-19 06:48:46

您可以这样做,其中地图函数将每个字符串转换为整数:

代码语言:javascript
运行
复制
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);

票数 0
EN

Stack Overflow用户

发布于 2020-11-19 07:46:25

您可以使用正则表达式:

代码语言:javascript
运行
复制
   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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64906593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档