【问题标题】:Remove everything after a certain character in txt file删除txt文件中某个字符后的所有内容
【发布时间】:2020-07-19 02:38:03
【问题描述】:

你好,我是编码新手,我需要你的帮助,我试图过滤一个 txt 文件并以我喜欢的格式制作一个列表

这是原始 txt 文件的样子:

pepitbeng:davy141089 | LV: 5 | BE: 1017 | RP: 400 | Refunds: 3 | Champs: 1 | Skins: 0 | Email Verified: true | Lastplay: Error
korvin918:M5al3elu2z6k | LV: 41 | BE: 2065 | RP: 23 | Refunds: 1 | Champs: 57 | Skins: 23 | Email Verified: true | Lastplay: 1/11/2019 7:02:15 PM
monkeyshadowtms:apolo2002 | LV: 21 | BE: 6795 | RP: 0 | Refunds: 3 | Champs: 10 | Skins: 0 | Email Verified: true | Lastplay: 7/25/2019 5:00:15 PM

有成千上万个

我喜欢逐行删除空格后的所有内容,因此只剩下 id 和密码,最终结果将如下所示

pepitbeng:davy141089
korvin918:M5al3elu2z6k
monkeyshadowtms:apolo2002

我尝试了一些东西,但只能获得第一行,

var fs = require('fs');
var textByLine = fs.readFileSync('1.txt').toString().split(" ");

console.log(textByLine[0]);

这样我可以得到 pepitbeng:davy141089 但无法进入第二行,因为所有内容都在它们之后被删除,所以我如何获得每行的 0 数组

我也试试这个

var fs = require('fs');
var textByLine = fs.readFileSync('1.txt').toString().split("\n");

console.log(textByLine[0]);

这样我可以逐行获取上述代码的全部结果

pepitbeng:davy141089 | LV: 5 | BE: 1017 | RP: 400 | Refunds: 3 | Champs: 1 | Skins: 0 | Email Verified: true | Lastplay: Error

我觉得我应该使用 forEach() 函数,但我不知道如何实现,等待您的回复谢谢。

不好意思打扰了,我已经解决了

var fs = require('fs');
var textByLine = fs.readFileSync('1.txt').toString().split("\n");

console.log(textByLine[0].split(" ")[0]);

希望能帮助别人

【问题讨论】:

  • lol 抱歉打扰各位了,我设法解决了这个问题 var fs = require('fs'); var textByLine = fs.readFileSync('1.txt').toString().split("\n"); console.log(textByLine[1].split(" ")[0]);
  • 自卑加一。

标签: javascript jquery filtering


【解决方案1】:

您可以使用正则表达式来匹配行首的非空格:

var fs = require('fs');
var lines = fs.readFileSync('1.txt')
  .toString()
  .split("\n")
  .map(line => line.match(/\S*/)[0]);

\S 匹配一个非空格字符,* 重复器匹配尽可能多的连续字符。

const text = `pepitbeng:davy141089 | LV: 5 | BE: 1017 | RP: 400 | Refunds: 3 | Champs: 1 | Skins: 0 | Email Verified: true | Lastplay: Error
korvin918:M5al3elu2z6k | LV: 41 | BE: 2065 | RP: 23 | Refunds: 1 | Champs: 57 | Skins: 23 | Email Verified: true | Lastplay: 1/11/2019 7:02:15 PM
monkeyshadowtms:apolo2002 | LV: 21 | BE: 6795 | RP: 0 | Refunds: 3 | Champs: 10 | Skins: 0 | Email Verified: true | Lastplay: 7/25/2019 5:00:15 PM`;
var lines = text
  .split("\n")
  .map(line => line.match(/\S*/)[0]);
console.log(lines);

如果您的输出需要改为字符串,则将空格后的所有内容替换为空字符串:

const text = `pepitbeng:davy141089 | LV: 5 | BE: 1017 | RP: 400 | Refunds: 3 | Champs: 1 | Skins: 0 | Email Verified: true | Lastplay: Error
korvin918:M5al3elu2z6k | LV: 41 | BE: 2065 | RP: 23 | Refunds: 1 | Champs: 57 | Skins: 23 | Email Verified: true | Lastplay: 1/11/2019 7:02:15 PM
monkeyshadowtms:apolo2002 | LV: 21 | BE: 6795 | RP: 0 | Refunds: 3 | Champs: 10 | Skins: 0 | Email Verified: true | Lastplay: 7/25/2019 5:00:15 PM`;
const newText = text.replace(/ .*/g, '');
console.log(newText);

【讨论】:

  • 您好首先感谢您的回复,您的方法确实更好,但是当我尝试使用它创建 txt 文件时遇到问题,问题是每一行都以“,”结尾,并且没有空格我的代码是 var fs = require('fs'); var lines = fs.readFileSync('1.txt') .toString() .split("\n") .map(line => line.match(/\S*/)[0]);控制台.log(行); fs.writeFile('mynewfile3.txt', lines, function (err) { if (err) throw err; console.log('Saved!'); });结果看起来像 pepitbeng:davy141089,korvin918:M5al3elu2z6k,monkeyshadowtms:apolo2002,Chok85:Carol1ne,
  • 您的split 方法正在创建一个数组,所以我认为您想要一个数组。如果您尝试将数组转换为字符串,则会在每个项目之间插入一个逗号。尝试先用换行符加入它:.join('\n'),然后再写入文件
猜你喜欢
  • 2011-08-03
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
  • 2014-04-28
  • 2018-04-03
  • 1970-01-01
  • 2015-10-23
  • 2018-12-09
相关资源
最近更新 更多