0

次の形式の複数行の入力文字列があります

ID | Col1 | Col2 | Col3 | Col4 | Col5 | Col6 | Col7 | Col8

データは数千行に及ぶ可能性があります。Col1 ~ 8 のデータ型は、行ごとに異なる可能性がある英数字または英字のみの可能性があります。

私は次のことをする必要があります:

  1. Col2 と Col3 を抽出します (私の場合、後で通常の文字列分割の代わりに正規表現を使用することを考えていますか?)

  2. 残りのデータも次の形式で欲しいです。ID | Col1 | Col4 | Col5 | Col6 | Col7 | Col8 (これは string.Replace を使用して達成できます。ポイント 1 のデータを取得したら)

ポイント2の解決策を達成しながらCol2とCol3のデータを失いたくないので、最初のポイントも重要であることに注意してください。

ポイント1の正規表現を (|){2,4} として作成しようとしましたが、これは完全に間違っていることを理解しており、現在、正規表現を使用してこれを進める方法がわかりません。

同じ正規表現を作成する方法についてのヘルプ/ポインターに感謝します。

4

3 に答える 3

1
var cols = input.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries)
            .Select(s => s.Trim())
            .ToList();

var extractedcols = cols.Skip(2).Take(2);
var output = string.Join(" | ", cols.Except(extractedcols));
于 2012-09-07T14:19:02.033 に答える
0

.Split'|', 5) を使用して、最初の 4 つの要素と残りの文字列を配列として取得します。

于 2012-09-07T14:10:59.427 に答える
0

このようにできない理由はありますか?

var str = "ID | Col1 | Col2 | Col3 | Col4 | Col5 | Col6 | Col7 | Col8";
var strA = str.Split(" | ".ToArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
var strExtract = new List<string> { strA[2], strA[4] };
strA.RemoveAt(2);
strA.RemoveAt(3);
Console.WriteLine(string.Join(" | ", strA.ToArray()));
于 2012-09-07T13:59:46.967 に答える