2012-11-17 143 views
1

我使用以下代碼來獲取FtpWebRequest的輸出,然後逐一解析這些行。完全修剪字符串

FTPEntity entity = new FTPEntity(entityName); 
entities.Add(entity); 
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(textBoxFTPSite.Text + entityName); 
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 
request.Credentials = new NetworkCredential(textBoxFTPUserName.Text, textBoxFTPPassword.Text); 
FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 
Stream responseStream = response.GetResponseStream(); 
StreamReader reader = new StreamReader(responseStream); 
string[] outputlines = reader.ReadToEnd().Trim().Split(new string[] { Environment.NewLine }, StringSplitOptions.None); 
foreach (string info in outputlines) { 
    if (info == "") { 
    worker.ReportProgress(1); 
    continue; 
    } 
    var tokens = info.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 
} 

由於FTP目錄中沒有任何內容,因此ReadToEnd()的輸出爲空。但Split函數仍在創建一個空白元素的數組,我不得不使用if語句來篩選出一個。

爲什麼Trim()不能完全修整?

回答

1

假設ReadToEnd()調用的輸出是空字符串(但不是空白,因爲這是不同的),那麼Trim()方法正在完美地完成它的工作,即刪除所有的空白區域,儘管沒有任何。

String.Split()方法將始終返回至少包含一個元素的數組,即使該元素是空字符串。由於你的字符串不包含任何文本,並且是空的,你將得到一個空字符串的數組。