在我的代码中,我明确指定了服务器名称,但我想隐式指定服务器名称。因此,我希望代码能够隐含地获取服务器名称。删除\\
&其中\n
。
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd ";
p.StartInfo.UseShellExecute = false;
p.StartInfo.Arguments = "/C net view";
char[] delimiterChars = { '\\' };
string input = "\\st1\n,\\st10\n,\\st4\n,\\st5";
List<string> serverNames = input.Split(',').ToList();
Console.WriteLine(input);
Console.ReadLine();
答案 0 :(得分:2)
我不明白你对“动态数组”的看法,但我想我得到了你想做的事情。以下是一些代码,它们会分割您的输入并返回所有元素的列表,而不会显示前导\\
或尾随\n
:
List<string> serverNames = input.Split(',')
.Select(s => {
if (s.StartsWith(@"\\"))
s = s.Substring(2);
if (s.EndsWith("\n"))
s = s.Substring(0, s.Length - 1);
return s;
})
.ToList();
答案 1 :(得分:1)
根据编辑问题的新信息,您的答案是:
//Write output while removing `\\` and `\n`
Console.WriteLine(
string.Join(",", input.Split(',').ToList()
.Select(serverName => serverName
.Replace("\\", "")
.Replace("\n", ""))
.ToArray()));
如果您需要更精确的控制,可以使用Regex.Replace()
正则表达式代替.Replace()
来更精确地进行匹配。
此外,List
是一种动态数组,但强类型除外。
此外,在您的示例中,您有一个声明为delimiterChars
的char数组,但您不在任何地方使用它。如果它不是示例的一部分,请不要包含它,因为它会让人们对你想要达到的目标感到困惑。
答案 2 :(得分:0)
我不确定你在问什么。但如果我的猜测是正确的,那么这可能是你需要的
string[] serverNames = new string[4];
serverNames[0] = "\\st1";
serverNames[1] = "\\st10";
serverNames[2] = "\\st4";
serverNames[3] = "\\st5";
请注意\n
变成newline
而\\
变成单\