0

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

身份证 | Col1 | Col2 | Col3 | Col4 | Col5 | Col6 | Col7 | Col8

数据可能会出现数千行 Col1-8 的数据类型可以是字母数字或仅 alpha,这可能因行而异。

我需要做以下事情:

  1. 提取 Col2 和 Col3 (考虑在这里使用正则表达式而不是通常的字符串拆分,因为在我的情况下以后会更慢?)

  2. 我也希望其余数据也采用以下格式。身份证 | 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

你有理由不能这样做吗?

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 回答
0

使用 .Split'|', 5) 将前 4 个元素和字符串的其余部分作为数组获取。

于 2012-09-07T14:10:59.427 回答