Удалить все после определенного символа в текстовом файле - PullRequest
2 голосов
/ 07 апреля 2020

привет, я новичок в кодировании, мне нужна ваша помощь о чем-то, я пытаюсь отфильтровать текстовый файл и составить список в формате, который мне нравится

вот как выглядит оригинальный текстовый файл:

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

и их тысячи

что мне нравится делать, так это построчно удалять все после пробела, так что остаются только идентификатор и пароль, конечный результат будет выглядеть так

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]);

, надеюсь, помочь кому-то еще

1 Ответ

2 голосов
/ 07 апреля 2020

Вы можете использовать регулярное выражение для сопоставления непробельных символов в начале строки:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...