Mam plik tekstowy, który zawiera więcej lub mniej akapitów. Tekst nie jest w rzeczywistości słowami, danymi rozdzielanymi przecinkami; ale to naprawdę nie jest tak ważne. Plik tekstowy jest podzielony na sekcje; mogą być sekcje i podsekcje. Podział sekcji jest oznaczony przez więcej niż jedną linię i podsekcję przez znak nowej linii.C# Regex.Replace Multiple Newlines
więc próbka danych:
This is the, start of a, section
908690,246246246,246246
246246,246,246246
This is, the next, section,
sfhklj,sfhjk,4626246
4yw2,fdhds5juj,53ujj
Zatem powyższe dane zawiera dwa odcinki, każdy z trzech podrozdziałach. Czasami jednak między sekcjami występuje więcej niż jedna pusta linia. Kiedy to nastąpi, chcę przekonwertować wiele znaków nowego wiersza, powiedzmy \n\n\n\n
, tylko na \n\n
; Myślę, że regex to prawdopodobnie sposób na zrobienie tego. Mogę również potrzebować różnych standardów newline, unix \n
i Windows \r\n
. Myślę, że pliki prawdopodobnie zawierają wiele kodów kreskowych.
Oto wyrażeń regularnych, które wymyśliłem; to nic specjalnego:
Regex.Replace(input, @"([\r\n|\n]{2,})", Enviroment.NewLine + Enviroment.NewLine}
Po pierwsze, czy jest to dobre rozwiązanie dla regex? Nie jestem taki dobry w regex.
drugie, potem chcesz podzielić każdą sekcję do elementu w tablicy ciągów:
Regex.Split(input, Enviroment.NewLine + Enviroment.NewLine)
Czy istnieje sposób, aby połączyć te kroki?
Chyba powinieneś najpierw zastąpić '([\ r \ n | \ n])' 'Enviroment.NewLine', aby zachować spójność danych. I nie wiem, jak to zoptymalizować, chyba nie można ich połączyć. Sądzę, że jesteś na dobrej drodze. Możesz ustawić 'RegexOptions.Compiled', aby było szybsze. – BrunoLM