在c#中创建动态数组

时间:2011-03-13 17:15:17

标签: c#

这是我的代码。

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;代码的变化。

3 个答案:

答案 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”之前添加了@。