Estoy tratando de encontrar y reemplazar una palabra en una cadena
Ejemplo:
let string = ` Title: Hello World Authors: Michael Dan ` Necesito encontrar Hellow World y reemplazarlo con lo que quiera, aquí está mi intento:
const replace = string.match(new RegExp("Title:" + "(.*)" + "Authors:")).replace("Test")Cuando reemplaza algún texto, no es necesario ejecutar String#match o RegExp#exec explícitamente, String#replace lo hace bajo el capó.
Puedes usar
let string = "\nTitle: Hello World\nAuthors: Michael Dan\n" console.log(string.replace(/(Title:).*(?=\nAuthors:)/g, '$1 Test'));El patrón coincide
(Title:) - Grupo 1: Title: cadena fija.* - el resto de la línea, cualquier cero o más caracteres que no sean caracteres de salto de línea, CR y LF (necesitamos consumir este texto para eliminarlo)(?=\nAuthors:) - una búsqueda anticipada positiva que coincide con una ubicación seguida inmediatamente por un carácter LF y Authors: cadena.Vea la demostración de expresiones regulares .
Si puede haber una línea CRLF que termine en su cadena, deberá reemplazar (?=\nAuthors:) con (?=\r?\nAuthors:) o (?=(?:\r\n?|\n)Authors:) .
Es mejor que primero convierta a un objeto y luego simplemente defina la propiedad del título:
let string = ` Title: Hello World Authors: Michael Dan ` const stringLines = string.split('\n'); let stringAsObject = {}; stringLines.forEach( (line) => { if (line.includes(':')) { stringAsObject[line.split(':')[0]] = line.split(':')[1]; } } ); stringAsObject.Title = 'NewValue';Puede usar el método de replace así:
string.replace("Hello World", "Test");