tengo este script, que corro en un programa llamado bot fabricante de la discordia. Estoy tratando de dar al robot la posibilidad de buscar una palabra en un archivo txt, a continuación, eliminar esta palabra y guardar el archivo:
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');
});
});
los tempVars ( "xx") variables están dadas por un programa llamado bot fabricante de la discordia, por lo que ningún problema con eso. Mi problema es que cuando el var "b" (que es el parámetro de un comando en discordia) existen no funciona en el archivo txt, el guión borrar la primera palabra en el archivo!
¿Cómo puedo agregar una condición a este script (b Si existen Dont en el archivo, se detiene la secuencia de comandos y devolver un mensaje)
gracias chicos muy mutch! tenga un buen día
Puedes utilizar replace
el método sin necesidad de convertir archivos en matrices.
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');
});
});
Este método sólo se sustituirá la palabra primera emparejado. En el caso, si desea reemplazar toda palabra que concordaba, como primer parámetro, puede utilizar expresiones regulares. Char g
es gradas para el mundial, m
es para multilínea.
const regex = new RegExp(b, 'gm')
data.replace(regex, '');
En caso de que quiera probar si el archivo contiene pidió la palabra, puede utilizar .includes
la función y la if
declaración.
if (!data.includes(b)) {
console.log("Requested word is not present in file")
// Your logic here
return
}