Tengo estas oraciones de muestra en un archivo de texto sin formato (utf-8):
today is an interest- ing day el "-" en la primera línea es seguido solo por \n (ya eliminé todo \r del archivo, para tratar uniformemente con diferentes fuentes) Me gustaría envolver las 2 líneas en 1 línea, debido a "- ", lo que significa que la palabra anterior se ha truncado y continúa en la siguiente línea. Para unir este tipo de líneas, lo que he intentado es algo así como:
text.replace(/[\n-]/g, "")pero no parece estar funcionando. ¿Cuál es la forma correcta de lograr esto?
Me gustaría poder lidiar con estos dos finales posibles (o situaciones similares que podría anticipar):
interest-\n interest- \n (possible blanks inserted before \n)Puedes usar
text.replace(/\b-\s*\n\b/g, "") text.replace(/\b-[^\S\r\n]*\n\b/g, "")Vea la demostración de expresiones regulares . Detalles :
\b - un límite de palabra- - un guion\s* - cero o más espacios en blanco / [^\S\r\n]* - cero o más espacios en blanco horizontales (compatible con terminaciones CRLF, CR y LF)\n - un carácter de nueva línea\b - un límite de palabra.Vea la demostración de JavaScript:
console.log( "today is an interest- \ning day".replace(/\b-\s*\n\b/g, "") ); console.log( "today is an interest-\ning day".replace(/\b-\s*\n\b/g, "") ); Un patrón compatible con Unicode que busca solo letras en ambos extremos puede parecerse a text.replace(/(?<=\p{L}\p{M}*)-[^\S\r\n]*\n(?=\p{L})/gu, "") , donde (?<=\p{L}\p{M}*) busca una letra + diacríticos opcionales antes - y (?=\p{L}) busca una letra después de una nueva línea. Vea la demostración de expresiones regulares .
Hay tres cosas incorrectas en su expresión regular para este uso:
Tienes la nueva línea antes de la -
El [] significa una lista de caracteres para coincidir con al menos uno de ellos
Debe agregar \s para que coincida con los espacios en blanco
Así que prueba esto:
text.replace(/-\s*\n/g, "")