追加数组和列表

时间:2019-02-28 18:51:06

标签: c# arrays list

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

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

2 个答案:

答案 0 :(得分:2)

您需要用“ |”分隔输入首先是太空。之后,您可以使用string.Join重新组合您的输入。尝试以下代码:

var input = "1 2 3 |4 5 6 | 7 8";
var result = string.Join("|", input.Split('|')
  .Select(part => string.Join(" ", 
    part.Trim().Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries))));

// now result is "1 2 3|4 5 6|7 8"

答案 1 :(得分:2)

这可以通过一个简单的正则表达式来实现:

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

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

或者,如果您可能需要在|周围划掉多个空格,请用零个或多个量词(?替换零或一个量词(*)。 ):

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

要同时处理数字之间的多个空格(不只是|个字符左右),我建议使用类似以下的内容:

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

这将匹配出现的零个或多个空格字符,后跟一个空格字符或一个|字符(捕获在1组中),然后匹配零个或多个空格字符并将其替换为1组中捕获的所有内容。