2011-03-13 59 views
0

这是我的代码。在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); 

全部\\删除输出中的字符。 &仅提取服务器名称。因此创建动态数组。 &这个数组被拆分&解析。我能怎么做?请给出解决方案&代码的更改。

回答

0

这是你的意思吗? :

List<string> serverNames = input.Split(',') 
           .Select(s => s.Trim('\\')) 
           .ToList(); 

另外,作为@Rob莱文指出你现在输入串不包含有效的网络路径是对的,他们应该\\双斜杠开始这样无论是与@前缀采取文字字符串(首选,更可读)像@"\\ABC-PC"或逃脱它们,即"\\\\ABC-PC"

2

这里的问题是“\”字符。在C#中,反斜杠字符在字符串中有特殊含义,意思是“下一个字符将会是一个转义码”。

总之,你的解决方法是,每一个斜杠加倍获得“\\\\ ABC-PC”,或前缀@符号,这意味着字符串“使用输入号码这串”:

string input = @"\\ABC-PC,\\ADMIN,\\ANUSHREE-PC,\\MANISHA-PC"; 

“\”被删除的原因(事实上,我认为你会发现你的双“\”变成了单个“\”)是因为它将“\”解释为“第一个斜杠表示”第二个斜杠是逃逸字符,反斜杠,因此我应该只打印第二个反斜杠“)。它具有特殊含义的原因是它允许你提供一个字符串,如“\ n”,意思是“换行符”。

0

我不完全得到它,但你的意思是:

string input = @"\\ABC-PC,\\ADMIN,\\ANUSHREE-PC,\\MANISHA-PC"; 
List<string> serverNames = input.Replace(@"\\", "").Split(',').ToList(); 

的变化是在@“\”所取代,通过任何事情,“在字符串输入前要加上@