2011-08-16 18 views
7

"固定幅"のデータファイルを解析しようとしていますが、データファイルごとに幅が異なるため引用符で囲んでいます。しかし、フィールドはX個のスペースで区切られていますので、ラインを読み込んだ後、line.Split( '')を実行すると思います。String.Split() - 連続する区切り文字を1つとして処理する

ただし、これは連続したスペースでは機能しません! !

答えて

17

あなたには2つのオプションがあります。

最初はStringSplitOptionsのパラメーターを受け入れstring.Split()オーバーロードを使用してStringSplitOptions.RemoveEmptyEntriesに渡すことです:あなたが行に複数のスペースを持っている場合は、生成された空のエントリは破棄され、その方法を

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

を。

2番目のオプションは、正規表現を使用して解析することです。これはおそらくあなたの場合は必要ではないかもしれませんが、フォーマットがより複雑になったり、時間がたつにつれて少し変化すると思われる場合は便利です。

+0

+1ですが、Regexは行をスペースで区切られた値に分割するために少し外に見えます。オプション1はうまくいくはずです。 – StriplingWarrior

+0

@Stripling十分な;名前の付いたキャプチャグループと柔軟な制約が、フォーマットの変更を容易にするために適しているからだと私は思っています。しかし、ええ、この単純なケースでは、オプション1はおそらくそれ以上の罰金です。 – dlev

関連する問題