はそれが行くので、ここStackOverflowの上でこのどこかを見つけるように見えることができません:(|)またはカンマ(、)区切り区切り形式
私はファイルを持って、私はそれがパイプであるかどうかを検出したいです。また、テキスト修飾子が引用符( ")であるかどうかを知りたい場合は、誰でもC#関数を持っていますか?ありがとう!
はそれが行くので、ここStackOverflowの上でこのどこかを見つけるように見えることができません:(|)またはカンマ(、)区切り区切り形式
私はファイルを持って、私はそれがパイプであるかどうかを検出したいです。また、テキスト修飾子が引用符( ")であるかどうかを知りたい場合は、誰でもC#関数を持っていますか?ありがとう!
このようなテキスト区切りファイルでは、TextFieldParserが非常に便利なツールであることがわかります。 (ビジュアル基本dllをインポートしてC#アプリケーションで使用できます)。
ファイルごとに固定数の列があるので、区切り記号を選択して1行の行数が前回とは異なる列まで解析/読み込みを続けるという一般的な戦略ライン。それが起こったときに、他の区切り文字に切り替えます(両方が無効な場合、何をしたいか分かりません)。区切り文字が最初の行にまったく見つからない場合は、区切り文字をスローすることもできます。 TextFieldParser
とHasFieldEnclosedInQuotesをtrueに設定すると、引用符で囲まれたフィールドを正しく扱うことができます(引用符を使用しない場合でもうまく機能します)。これは通常の文字列操作を使用するときに手動で引用符を処理しようとするよりも簡単にになります。
最初の行を取得します。 )。
は、その後、あなたは可能なフォーマットをチェックするために正規表現を使用することができます。すなわち
Regex rePipesAndQualifier = ("[^|"]*"|);
rePipesAndQualifier.match(yourFileLine);
戻り、いくつかの非空で一致した場合は、区切り文字を持っているセパレータとして、それはパイプを使用しています知っている。
コンマを確認する正規表現を作る除外され、修飾子の有無にかかわらず。
これは、すべての区切り文字(区切り文字のみ)とあなたが知っている区切り文字(区切り文字は途切れ途切れに終わっているか、途中で終わっているか、フィールド数など)に依存します。だから私はあなたに正確な解決策を与えることはできません。
これは私の頭の上から外れていて、ファイルの列数が同じで、区切り文字として使用できる文字のリストがあると仮定しています。
行のサブセット、またはファイルが十分小さい場合はファイル全体を取り出し、文字列配列に格納します。区切り文字による
string[] lines = text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
ループ、intの配列にその区切り文字を使用して、分割エントリのカウントを挿入:
int[] counts = lines.Select(s => s.Split(currentDelimiter).Length).ToArray();
は、すべてのカウントが互いに等しいとすべてであることを確認するために、独自のメソッドを使用します1より大きい。区切り文字は使用する区切り文字です。
**デリミタが使用されていますか?どの発見的方法を思いついたのですか? – Oded
基本的に文字列を検索し、解析し、区切り文字をある種の文字や文字列に入れようとします。 – Badmiral
行に関する項目の数など、データについて何か知っていますか? – Servy