从服务器名称中删除字符

时间:2011-03-15 04:50:56

标签: c#

在我的代码中,我明确指定了服务器名称,但我想隐式指定服务器名称。因此,我希望代码能够隐含地获取服务器名称。删除\\&其中\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();

3 个答案:

答案 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\\变成单\