簡體   English   中英

在c#中創建動態數組

[英]create dynamic array in 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);

輸出中的所有\\\\字符都被刪除。只提取服務器名稱。創建動態數組。此數組被拆分和解析。 我能怎么做? 請給出解決方案和代碼更改。

這里你的問題是“\\”字符。 在C#中,反斜杠字符在字符串中具有特殊含義,這意味着“下一個字符將成為轉義代碼”。

簡而言之,您的解決方案是將每個斜線加倍以獲得“\\\\\\\\ ABC-PC”,或者在字符串前加上@符號,這意味着“完全按照鍵入的方式使用此字符串”:

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

刪除“\\”的原因(事實上我認為你會發現你的雙“\\”正在成為單個“\\”)是因為它將“\\”解釋為“第一個斜杠表示下一個轉義字符。第二個斜杠是轉義字符,反斜杠,因此我應該打印第二個反斜杠“)。 它具有特殊含義的原因是它允許您提供類似“\\ n”的字符串,這意味着“換行符”。

你是這個意思嗎?

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

同樣@Rob Levine指出你的輸入字符串現在不包含有效的網絡路徑,它們應該以\\\\雙斜杠開頭,所以要么用@前綴來取字符串(首選,更具可讀性),如@"\\\\ABC-PC"或逃脫它們,即"\\\\\\\\ABC-PC"

我不完全理解,但你的意思是:

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

更改是在@“\\”中替換,沒有任何內容,並且在“in string input”之前添加了@。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM