2012-08-26 177 views
-1

例如,我有這個功能搜索文件:我怎樣才能得到一個文件名的一部分?

public void Search(string strExtension, 
          DirectoryInfo di, 
          List<FileSystemInfo> pResult) 
     { 
      try 
      { 

       foreach (FileInfo fi in di.GetFiles()) 
       { 
        if (InvokeRequired) 
        { 
         BeginInvoke(new Action(() => label2.Text = fi.Name)); 
        } 
        if (fi.Name == "MessageLog.xsl") 
        { 
         foreach (FileInfo fii in di.GetFiles()) 
         { 
         if (fii.Extension == strExtension) 
          pResult.Add(fii); 
         } 
         if (InvokeRequired) 
         { 
          BeginInvoke(new Action(() => label4.Text = pResult.Count.ToString() + Environment.NewLine)); 
         } 

        } 
       } 

        foreach (DirectoryInfo diChild in di.GetDirectories()) 
         Search(strExtension, diChild, pResult); 

      } 
      catch (Exception e) 
      { 
      } 
     } 

當使用這種小班化搜索是通過IM:

public class MyItem 
     { 
      public FileSystemInfo fsi { get; set; } 
      public override string ToString() 
      { 
       return this.fsi.Name; 
      } 
     } 

而在BackgroundWorker的完成情況顯示文件名:

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
     { 

      for (int i = 0; i < this.fsi.Count; i++) 
      { 
       this.listBox1.Items.Add(new MyItem() { fsi = fsi[i] }); 
      } 


     } 

在列表框的結果是例如這樣的:

danny125645.xml 

yaron576567.xml 

這是沒有目錄的文件名。

是否有解析文件名,所以它會沒有數字?例如:

danny.xml 

yaron.xml 
+5

[如何從一個字符串中刪除數(http://stackoverflow.com/questions/1657282/how-to-remove-數字從字符串在正則表達式替換) –

回答

1

更新你的等級和變化:

public override string ToString() 
{ 
    return Regex.Replace(this.fsi.Name, @"[\d]", string.Empty); 
} 
+1

aahh從正則表達式中取出'-'。不要讓它變得如此明顯,你是複製粘貼。 –

+0

從哪裏複製粘貼? –

+0

請參閱我對上述問題的評論。 –

相關問題