2011-08-16 12 views
7

Próbuję sparsować zestaw "danych o stałej szerokości", używam tego w cudzysłowach, ponieważ szerokość jest różna dla każdego pliku danych. Jednak pola są oddzielone przez X liczbę spacji, więc pomyślałem, aby po prostu przeczytać w linii, a następnie zrobić line.Split (")String.Split() - traktowanie kolejnych ograniczników jako jeden

Jednak to nie działa dla kolejnych miejsc! !

Odpowiedz

17

Masz kilka opcji.

Pierwszym jest użycie przeciążenie string.Split() która akceptuje parametr StringSplitOptions i przechodzą w StringSplitOptions.RemoveEmptyEntries:

string[] columns = lineOfText.Split(new [] {' '}, StringSplitOptions.RemoveEmptyEntries); 

ten sposób, jeśli masz wiele miejsc w jednym rzędzie, puste wpisy, które są generowane będą odrzucane .

Druga opcja to użycie wyrażeń regularnych do wykonania analizy. Prawdopodobnie nie jest to konieczne w twoim przypadku, ale może się przydać, jeśli format staje się bardziej skomplikowany lub możesz się spodziewać, że z czasem ulegnie zmianie.

+0

+1, ale Regex wydaje się nieco za burtą, aby podzielić linie na wartości rozdzielone spacjami. Opcja 1 powinna być w porządku. – StriplingWarrior

+0

@Stripling Fair wystarczająco; Uważam, że jest to lepsze, ponieważ nazwane grupy przechwytujące i elastyczne ograniczenia ułatwiają dostosowywanie się do zmieniających się formatów. Ale tak, w tym prostym przypadku opcja 1 jest prawdopodobnie bardziej niż w porządku. – dlev

Powiązane problemy