Estoy usando node.js y estoy experimentando con la creación de un chatbot.
Una de mis respuestas es hello ${username} , que se devuelve en una cadena de una consulta de base de datos.
msg.channel.send(results.rows[index].reply);
Pero eso solo envía hello ${username} cuando me gustaría que ${username} se resuelva en una variable local que contenga el nombre del usuario. por ejemplo, hola Mark.
¿Es posible?
Gracias por las respuestas. me decidí por:
let reply = results.rows[index].reply; reply = reply.replace('${username}', username); msg.channel.send(reply);Debería haber dicho que lo intenté:
msg.channel.send(`${results.rows[index].reply}`);esperando que se resolviera recursivamente, pero no fue así.
Puede reemplazar todas las apariciones de strings ya declaradas. Puede usar Mapa aquí y declarar cadenas con las que va a reemplazar.
El siguiente código también maneja el caso en el que no declaró la cadena de reemplazo en el mapa y devuelve la cadena original tal como está.
const query = "hello ${username}, your email id is ${useremail} and password is ${userpassword}"; const map = new Map(); map.set("username", "Mark"); map.set("useremail", "mark@email.com"); const result = query.replace(/\$\{(.*?)\}/g, (...match) => { return map.has(match[1]) ? map.get(match[1]) : `${match[0]}`; }); console.log(result);Si conoce de antemano las variables que espera, puede hacer esto:
const username = 'John Smith'; const strFromDB = 'hello ${username}.'; const strWithUser = strFromDB.replace('${username}', username);