2012-05-07 10 views
0

はそれが行くので、ここStackOverflowの上でこのどこかを見つけるように見えることができません:(|)またはカンマ(、)区切り区切り形式

私はファイルを持って、私はそれがパイプであるかどうかを検出したいです。また、テキスト修飾子が引用符( ")であるかどうかを知りたい場合は、誰でもC#関数を持っていますか?ありがとう!

+4

**デリミタが使用されていますか?どの発見的方法を思いついたのですか? – Oded

+0

基本的に文字列を検索し、解析し、区切り文字をある種の文字や文字列に入れようとします。 – Badmiral

+1

行に関する項目の数など、データについて何か知っていますか? – Servy

答えて

1

このようなテキスト区切りファイルでは、TextFieldParserが非常に便利なツールであることがわかります。 (ビジュアル基本dllをインポートしてC#アプリケーションで使用できます)。

ファイルごとに固定数の列があるので、区切り記号を選択して1行の行数が前回とは異なる列まで解析/読み込みを続けるという一般的な戦略ライン。それが起こったときに、他の区切り文字に切り替えます(両方が無効な場合、何をしたいか分かりません)。区切り文字が最初の行にまったく見つからない場合は、区切り文字をスローすることもできます。 TextFieldParserHasFieldEnclosedInQuotesをtrueに設定すると、引用符で囲まれたフィールドを正しく扱うことができます(引用符を使用しない場合でもうまく機能します)。これは通常の文字列操作を使用するときに手動で引用符を処理しようとするよりも簡単にになります。

0

最初の行を取得します。 )。

は、その後、あなたは可能なフォーマットをチェックするために正規表現を使用することができます。すなわち

Regex rePipesAndQualifier = ("[^|"]*"|); 

rePipesAndQualifier.match(yourFileLine);戻り、いくつかの非空で一致した場合は、区切り文字を持っているセパレータとして、それはパイプを使用しています知っている。

コンマを確認する正規表現を作る除外され、修飾子の有無にかかわらず。

これは、すべての区切り文字(区切り文字のみ)とあなたが知っている区切り文字(区切り文字は途切れ途切れに終わっているか、途中で終わっているか、フィールド数など)に依存します。だから私はあなたに正確な解決策を与えることはできません。

+2

パイプで区切られたファイルにはコンマで区切られたフィールドがあり、コンマで区切られたファイルにはパイプで区切られたフィールドがあります。いずれかの存在があなたに何も言わない。 – Servy

+0

すべてのものが混在している可能性があり、情報がない場合は、クリスタルボールを使用してください。真剣に、事前にあなたが知っているものがなければなりません。 – JotaBe

+2

はい、私たちは、私たちが知らない自分自身を選ぶのではなく、彼が知っていること、あるいは彼が決定の根拠としたいことをOPに尋ねたのです。 – Servy

1

これは私の頭の上から外れていて、ファイルの列数が同じで、区切り文字として使用できる文字のリストがあると仮定しています。

行のサブセット、またはファイルが十分小さい場合はファイル全体を取り出し、文字列配列に格納します。区切り文字による

string[] lines = text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); 

ループ、intの配列にその区切り文字を使用して、分割エントリのカウントを挿入:

int[] counts = lines.Select(s => s.Split(currentDelimiter).Length).ToArray(); 

は、すべてのカウントが互いに等しいとすべてであることを確認するために、独自のメソッドを使用します1より大きい。区切り文字は使用する区切り文字です。

+0

あまりにも多くの仮定があります。 OPは、公式化されるべき答えについては、ちょうど推測だけでは十分とはいえません。 – Oded

+0

コンマ/パイプで区切られたリストの多くは、各行に同じ数の項目がありません。また、デリミタの一部が文字列修飾子の内部にある可能性があることを考慮する必要があります。 – Servy

+0

良い点、@省エネ。これはhttp://stackoverflow.com/questions/761932/how-should-i-detect-which-delimiter-is-used-in-a-text-fileの複製となる可能性があります –

関連する問題