Reemplace las líneas nuevas con el párrafo y con las tags

Entonces sé cómo reemplazar las nuevas líneas en mi código C #. Pero reemplazar una nueva línea por una etiqueta
no siempre es muy correcto.

Entonces, me preguntaba qué tipo de estrategia usan los demás. La forma correcta, supongo, sería usar tags

y tags
.

Aquí hay algunos ejemplos de los resultados que me gustaría obtener.

Si no hay una nueva línea, quiero que el texto esté envuelto en una etiqueta

.

Este texto no contiene nuevas líneas

 

This text contains no newlines

Si el texto contiene una nueva línea, quiero que sea reemplazada por una etiqueta
y que esté envuelta en tags

.

Este texto contiene
1 línea nueva

 

This text contains
1 newline.

Si hay ‘doble línea nueva’, quiero que ese bloque esté envuelto en tags

.

Este es un texto con ‘doble nueva línea’ al final.

Este es un texto sin línea nueva al final.

 

This a text with 'double newlines at the end.

This is a text with no newline at the end.

Podría escribir más ejemplos / combinación, pero supongo que es algo claro a qué me refiero.

Gracias por adelantado.

Esta es una forma en que puede hacerlo usando solo reemplazos de cadena simples:

  string result = "

" + text .Replace(Environment.NewLine + Environment.NewLine, "

") .Replace(Environment.NewLine, "
") .Replace("

", "

" + Environment.NewLine + "

") + "

";

Tenga en cuenta que su texto debe ser escapado en HTML primero; de lo contrario, podría estar en riesgo de ataques de secuencias de comandos entre sitios. (Nota: incluso el uso de tags


todavía tiene un riesgo de secuencias de comandos entre sitios).

Podrías dejarlo solo y usar CSS para renderizar los saltos correctamente. Aquí hay un ejemplo complicado que es un tipo de reemplazo “bonito” para el

 pero está usando un 

en su lugar:

El texto va aquí.