Parsowanie pliku konfiguracyjnego

0

Jak najzgrabniej wykonać parsowanie pliku konf. o podanym niżej formacie:

A:Wartosc
B:Wartosc
C: Wartosc

A:Wartosc
B:Wartosc
C:Wartosc

A:Wartosc
B:Wartosc
C:Wartosc

gdzie mnie interesują poszczególne bloki oddzielone pustą/pustymi liniami. Przy czym pusta linia może zawierać wiele białych znaków. Ktoś może zaproponować jakieś elastyczne rozwiązanie, uwzględniające fakt, że pomiędzy blokami danych może wystąpić jedna lub wiele pustych lin, zawierających zero lub więcej białych znaków?

Próbowałem regexpów coś na wzór:

Regex.Split(text, @"^\s*\r\n$", RegexOptions.Multiline);

ale nie działa to właściwie.

0

Pewno można Regexem, ale ja bym użył tablicy stringów, pętli for, string.IndexOf() i string.Substring(), może jeszcze String.IsNullOrEmpty().

0

Możesz zrobić to na przykład tak:

            string[] split = Regex.Split(text, @"^\s+$", RegexOptions.Multiline);
            foreach (string match in split)
            {
                Console.WriteLine("----------");
                Console.WriteLine(match.Trim());
            }

Tekst zostanie rozdzielony przez linie zawierające same puste znaki.
Zapisywanie danych konfiguracyjnych w takiej postaci uważam za mało eleganckie.
Stwórz sobie klasę, która będzie reprezentować a następnie użyj serializacji Xml aby ją zapisać do pliku.
Wczytywanie i zapisywanie takich danych jest na prawdę proste.

0

Dzięki za kod. Odnośnie formatu to w życiu nie posunąłbym się do zaprojektowania formatu pliku konfiguracyjnego w ten sposób :-). Rzeczą naturalna jest by w takim przypadku użyć zapisu XML, natomiast mój soft musi przyjmować format danych zewnętrznych, zaprojektowanych przez mało doświadczonego kodera i stąd taka postać danych.

0

Naturalna rzecz w tym wypadku to ConfigurationManager

0

Ale my rozmawiamy o formacie zapisu danych konfiguracyjnych (XML) a nie o konkretnych rozwiązaniach bo tych jest wiele, od serializacji po wspominanego ConfigurationManager-a a kończywszy na ręcznym budowaniu pliku. ConfigurationManager również zapisuje dane w formacie XML i to jest właśnie naturalną rzeczą w takiej sytuacji ;-).

0

Ano tak, ja tylko mowie ze powinno sie raczej stosowac ConfigurationManager-a zamiast serializacji xml do takich celów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1