Проверьте, существует ли слово в file.txt - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть этот скрипт, который я запускаю в программе под названием Discord Bot Maker. Я пытаюсь дать боту возможность искать слово в текстовом файле, затем удалить это слово и сохранить файл:

let fs = require('fs');
let a = tempVars('a');
let b = tempVars('carte');

fs.readFile(`resources/${a}.txt`, { encoding: 'utf-8' }, (err, data) => {
  if (err) throw err;

  let dataArray = data.split('\n'); // convert file data in an array
  const searchKeyword = `${b}`; // we are looking for a line, contains, key word 'user1' in the file

  const key = dataArray.filter((arr) => arr.includes(searchKeyword));
  const index = key.length >= 1 && dataArray.indexOf(key[0]);
  if (index > -1) dataArray.splice(index, 1);

  // UPDATE FILE WITH NEW DATA
  // IN CASE YOU WANT TO UPDATE THE CONTENT IN YOUR FILE
  // THIS WILL REMOVE THE LINE CONTAINS 'user1' IN YOUR shuffle.txt FILE
  const updatedData = dataArray.join('\n');
  fs.writeFile(`resources/${a}.txt`, updatedData, (writeErr) => {
    if (writeErr) throw err;
    console.log('Successfully updated the file data');
  });
});

переменные tempVars ("xx") задаются Программа под названием Discord Bot Maker, так что никаких проблем с этим. Моя проблема заключается в том, что когда var "b" (который является параметром команды, находящейся в раздоре) не существует в текстовом файле, сценарий удаляет первое слово в файле!

Как добавить условие к этому сценарию (если b не существует в файле, остановите сценарий и верните сообщение)

большое спасибо, ребята! хорошего дня

1 Ответ

0 голосов
/ 04 апреля 2020

Вы можете использовать метод replace без преобразования файла в массивы.

let fs = require('fs');
let a = tempVars('a');
let b = tempVars('carte');

fs.readFile(`resources/${a}.txt`, { encoding: 'utf-8' }, (err, data) => {
  if (err) throw err;

  const updatedData = data.replace(b, '');

  fs.writeFile(`resources/${a}.txt`, updatedData, (writeErr) => {
    if (writeErr) throw err;
    console.log('Successfully updated the file data');
  });
});

Этот метод заменит только первое найденное слово. В случае, если вы хотите заменить все совпадающие слова, в качестве первого параметра, вы можете использовать регулярное выражение. Char g обозначает глобальный, m - многострочный.

const regex = new RegExp(b, 'gm')

data.replace(regex, '');

Если вы хотите проверить, содержит ли файл запрошенное слово, вы можете использовать функцию .includes и оператор if.

if (!data.includes(b)) {
  console.log("Requested word is not present in file")
  // Your logic here
  return
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...