首页 > 解决方案 > 追加数组和列表

问题描述

例如,如果输入的输入是:

1 2 3 |4 5 6 | 7 8

我们应该操纵它

1 2 3|4 5 6|7 8

另一个例子:

7 | 4 5|1 0| 2 5 |3

我们应该操纵它

7|4 5|1 0|2 5|3

这是我的想法,因为我想交换一些子数组(7;4 5;1 0;2 5;3)。

我不确定这段代码是否正常工作,它可能是我想做的基础,但我必须上传它让你看到我的工作。

static void Main(string[] args)
{
    List<string> arrays = Console.ReadLine()
        .Split(' ', StringSplitOptions.RemoveEmptyEntries)
        .ToList();

    foreach (var element in arrays)
    {
        Console.WriteLine("element: " + element);
    }
}

标签: c#arrayslist

解决方案


这可以用一个简单的正则表达式来做到这一点:

var result = Regex.Replace(input, @"\s?\|\s?", "|");

这将匹配任何(可选)空白字符,后跟一个|字符,后跟一个(可选)空白字符,并将其替换为单个|字符。

或者,如果您可能需要去除 周围的多个空格|,请将零或一量词 ( ?) 替换为零个或多个量词 ( *):

var result = Regex.Replace(input, @"\s*\|\s*", "|");

为了同时处理数字之间的多个空格(不仅仅是|字符周围),我推荐这样的东西:

var result = Regex.Replace(input, @"\s*([\s|])\s*", "$1")

这将匹配任何出现的零个或多个空白字符,后跟一个空白字符或一个|字符(在 group 中捕获1),然后是零个或多个空白字符,并将其替换为在 group 中捕获的任何内容1


推荐阅读