簡體   English   中英

C#中的RegEx用於管道式(|)模式字符串

[英]RegEx in c# for a piped (|) pattern string

我有以下格式的多行輸入字符串

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

數據可能會成千上萬行。Col1-8的數據類型可以是字母數字或僅字母,這可能因行而異。

我需要執行以下操作:

  1. 提取Col2和Col3(想在這里使用Regex而不是通常的字符串拆分,因為在我看來,這會比較慢嗎?)

  2. 我也希望其余數據也采用以下格式。 ID | Col1 | Col4 | Col5 | Col6 | Col7 | Col8(我可以使用string來實現。一旦在第1點獲得數據,就替換掉)

請注意,在實現第2點的解決方案時,我不想丟失Col2和Col3的數據,因此第一點對我來說也很重要。

我嘗試為點1創建RegEx為(|){2,4},現在我知道這是完全錯誤的,並且目前我不知道如何使用Regex進行此操作。

我將非常感謝您提供有關如何為其創建正則表達式的任何幫助/指針。

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));

您有理由無法這樣做嗎?

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()));

使用.Split'|',5)將前4個元素和其余字符串作為數組獲取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM