这是我的代码。
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd ";
p.StartInfo.UseShellExecute = false;
p.StartInfo.Arguments = "/C net view";
// p.StartInfo.RedirectStandardOutput = true;
p.Start();
char[] delimiterChars = { '\\' };
// List<string> serverNames = new List<string>();
string input = "\\ABC-PC,\\ADMIN,\\ANUSHREE-PC,\\MANISHA-PC";
List<string> serverNames = input.Split(',').ToList();
// System.Console.WriteLine("Original input: '{0}'", input);
输出中的所有\\
字符都将被删除。&amp;只提取服务器名称。创建动态数组。这个数组被拆分和解析。我能怎么做?请给出解决方案&amp;代码的变化。
答案 0 :(得分:2)
这里的问题是“\”字符。在C#中,反斜杠字符在字符串中具有特殊含义,这意味着“下一个字符将成为转义代码”。
简而言之,您的解决方案是将每个斜线加倍以获得“\\\\ ABC-PC”,或者在字符串前加上@符号,这意味着“完全按照键入的方式使用此字符串”:
string input = @"\\ABC-PC,\\ADMIN,\\ANUSHREE-PC,\\MANISHA-PC";
删除“\”的原因(事实上我认为你会发现你的双“\”正在成为单个“\”)是因为它将“\”解释为“第一个斜线表示逃脱”第二个斜线是转义字符,反斜杠,因此我应该打印第二个反斜杠“)。它具有特殊含义的原因是它允许您提供类似“\ n”的字符串,这意味着“换行符”。
答案 1 :(得分:0)
List<string> serverNames = input.Split(',')
.Select( s => s.Trim('\\'))
.ToList();
同样@Rob Levine指出你的输入字符串现在不包含有效的网络路径,它们应该以{{1}}双斜杠开头,所以要么用@前缀来取字符串(首选,更可读)比如\\
或者转义它们@"\\ABC-PC"
。
答案 2 :(得分:0)
我不完全理解,但你的意思是:
string input = @"\\ABC-PC,\\ADMIN,\\ANUSHREE-PC,\\MANISHA-PC";
List<string> serverNames = input.Replace(@"\\", "").Split(',').ToList();
更改在@“\”中被替换,什么都没有,并且在“in string input”之前添加了@。