2014-09-19 70 views
0

我需要一些幫助,從文件中刪除一行文本的一部分。例如:如何刪除C#中的一行文本的一部分

讓我們說我有一個DIR輸出列表,像這樣:

Directory of C:\Data\Junk 

03/12/2014 08:35 AM <DIR>   . 
03/12/2014 08:35 AM <DIR>   .. 
03/05/2014 05:36 PM    397 junk.xml 
03/05/2014 05:36 PM    397 more_junk.xml 

,我的目標是把它分爲以下幾個:

Directory of C:\Data\Junk 

. 
.. 
junk.xml 
more_junk.xml 

我知道如何使用要做到這一點編輯如果我有一個預期的字符串刪除,但無法弄清楚如何動態做到這一點。另外 - 是否有辦法檢測到,如果行的第一部分是日期,然後刪除X個字符(在這種情況下,X會將我帶到文件名的開頭)?

在此先感謝您的幫助!

+5

在命令提示符(DOS),您可以獲取文件名和目錄名只使用'DIR/B'其中'B'只是格式化你的願望,例如爲裸體格式。你可以得到像'dir/b> mytextfile.txt'這樣的txt文件,你將只獲得沒有時間戳的文件/目錄名稱 – Habib 2014-09-19 20:12:05

+0

是的,而且代碼非常簡單。你基本上已經描述過了,你只需要把它變成C#而不是英文。但你爲什麼想要。爲什麼不使用內置的.NET框架方法從目錄中獲取文件列表? – mason 2014-09-19 20:13:16

+2

'System.IO'命名空間更容易使用。 – paqogomez 2014-09-19 20:13:54

回答

2

如果你知道你要多少字符串的放棄(這上面似乎是40個字符)的長度,你可以做

yourString.Substring(40)

獲得該行的其餘部分。

但是,評論的建議是合理的 - 你可能不應該首先處理這個特定的字符串案例。

+0

考慮顯示'string part = yourString.Substring(...)' - 根據背景可以認爲'Substring'修改了原始字符串... – 2014-09-19 20:34:07

3

爲什麼不使用Directory.GetFiles列出所有文件?

string[] files = Directory.GetFiles(@"C:\Data\Junk", "*.*", SearchOption.TopDirectoryOnly); 

然後

Console.WriteLine("."); 
Console.WriteLine(".."); 
foreach(string f in files) 
{ 
    Console.WriteLine(file); 
}