Javascript 在“-”之前和“.”之后添加换行符

Javascript Adding line break before "-" and after "."

我在 postgres 数据库中有这样一个字段:

BACHILLER - Ciencias y Tecnología. - Humanidades y Ciencias Sociales. - Idiomas: inglés y francés. PROYECTOS Y SERVICIOS PEDAGÓGICOS - Aula abierta de apoyo (PROA). - Departamento de Orientación con dos orientadoras: atención individualizada y colectiva de alumnado y familias. - Tutoría coordinada por niveles. - Plan de Normalización Lingüística del Euskera. - AULATICE. INNOVACIÓN Y PROYECTOS DE FORMACIÓN - Página web del centro, dinámica y de apoyo a la enseñanza. - Blogs: Orientación, Psicología, AGENDA 21 ESCOLAR (A21e), Matemáticas, Física, PARADISE, Números, Asociación de Padres y Madres… - AGENDA 21 ESCOLAR (A21e). Participación en la agenda municipal. Certificado de Escuela Sostenible. - Proyecto plurilingüe: ENGLISH PROJECT. - Proyecto del Aula de Aprendizaje de Tareas (AAT): cocina. - Participación activa en los proyectos convocados por el Dpto. de Educación. SERVICIOS - Transporte escolar subvencionado en ESO. - Comedor escolar (ESO). - Acceso a Internet para el alumnado (WI-FI) e Intranet. INSTALACIONES - Enfermería. - Dos bibliotecas informatizadas (ESO y Bachiller). - TV y DVD en aulas. - Cuatro aulas de Informática. - Salón de actos. - Laboratorios de: Física, Química, Ciencias Naturales y Fotografía. - Talleres de: Plástica, Tecnología y Electrotecnia. - Aulas especializadas de: música, arte, euskera, castellano, inglés, AULATICE… - Amplias instalaciones deportivas, cubiertas y al aire libre. Frontón.

我想使用 javascript 将此文本转换为:

BACHILLER
- Ciencias y Tecnología.
- Humanidades y Ciencias Sociales.
- Idiomas: inglés y francés.
PROYECTOS Y SERVICIOS PEDAGÓGICOS
- Aula abierta de apoyo (PROA).
- Departamento de Orientación con dos orientadoras: atención individualizada y colectiva de
alumnado y familias.
- Tutoría coordinada por niveles.
- Plan de Normalización Lingüística del Euskera.
- AULATICE.
INNOVACIÓN Y PROYECTOS DE FORMACIÓN
- Página web del centro, dinámica y de apoyo a la enseñanza.
- Blogs: Orientación, Psicología, AGENDA 21 ESCOLAR (A21e), Matemáticas, Física, PARADISE,
Números, Asociación de Padres y Madres…
- AGENDA 21 ESCOLAR (A21e). Participación en la agenda municipal. Certificado de Escuela
Sostenible.
- Proyecto plurilingüe: ENGLISH PROJECT.
- Proyecto del Aula de Aprendizaje de Tareas (AAT): cocina.
- Participación activa en los proyectos convocados por el Dpto. de Educación.
SERVICIOS
- Transporte escolar subvencionado en ESO.
- Comedor escolar (ESO).
- Acceso a Internet para el alumnado (WI-FI) e Intranet.
INSTALACIONES
- Enfermería.
- Dos bibliotecas informatizadas (ESO y Bachiller).
- TV y DVD en aulas.
- Cuatro aulas de Informática.
- Salón de actos.
- Laboratorios de: Física, Química, Ciencias Naturales y Fotografía.
- Talleres de: Plástica, Tecnología y Electrotecnia.
- Aulas especializadas de: música, arte, euskera, castellano, inglés, AULATICE…
- Amplias instalaciones deportivas, cubiertas y al aire libre. Frontón.

我需要编写一个小函数来解决这个问题。我认为在输出文本中的每个“-”之前和“.”之后插入一个新的换行符。标志就足够了。它必须足够聪明,当两个要求都满足时不添加两个换行符。

我的javascript知识非常有限,这次我需要同样的帮助...

此致,

实现此目的的最佳方法可能是使用正则表达式。 如果您想了解有关正则表达式的更多信息,我建议您查看 RegexOne.com.

我的解决方案是:

textblock.replace(/ - /g, "\n- ").replace(/\./g, ".\n").replace(/^\s*\n/gm, "");

首先我替换每个“-”和每个“.”换行符和后记我删除了满足两个条件时出现的任何空行。

JSFiddle link

input.replace(/[-]/g, "\r\n-").replace(/((\.\s*)([A-Z]{2,}))/g,".\r\n")