Tengo un archivo de texto que contiene más o menos párrafos. El texto no es realmente palabras, sus datos delimitados por comas; pero eso no es realmente tan importante. El archivo de texto está dividido en secciones; puede haber secciones y subsecciones. La división de secciones se denota por más de una nueva línea y subsecciones por una nueva línea.C# Regex.Replace Multiple Newlines
datos de modo de ejemplo:
This is the, start of a, section
908690,246246246,246246
246246,246,246246
This is, the next, section,
sfhklj,sfhjk,4626246
4yw2,fdhds5juj,53ujj
lo que los datos anteriormente contiene dos secciones, cada una con tres subsecciones. A veces, sin embargo, hay más de una línea vacía entre las secciones. Cuando esto ocurre, quiero convertir los múltiples caracteres de nueva línea, digamos \n\n\n\n
a solo \n\n
; Creo que Regex es probablemente la manera de hacer esto. También es posible que necesite utilizar diferentes estándares de nueva línea, unix \n
y Windows \r\n
. Creo que los archivos probablemente contienen múltiples codificaciones finales.
Aquí está la expresión regular que he creado; no es nada especial:
Regex.Replace(input, @"([\r\n|\n]{2,})", Enviroment.NewLine + Enviroment.NewLine}
En primer lugar, ¿es esta una buena solución de expresiones regulares? No soy tan bueno con Regex.
En segundo lugar, a continuación, desea dividir cada sección en un elemento en una matriz de cadenas:
Regex.Split(input, Enviroment.NewLine + Enviroment.NewLine)
¿Hay una manera de combinar estos pasos?
Supongo que primero debe reemplazar '([\ r \ n | \ n])' con 'Enviroment.NewLine' para mantener la coherencia de los datos. Y no sé de una manera de optimizarlo, supongo que no puedes combinarlos. Supongo que estás en el camino correcto. Es posible que desee establecer 'RegexOptions.Compiled' para hacerlo más rápido. – BrunoLM