例如,如果输入的输入是:
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);
}
}
答案 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
组中捕获的所有内容。