2010-05-03 140 views
1

我試圖剝離正在傳遞的unc路徑的最後一部分,並將其放入一個變量中,以便在下一行的方法中使用。找到UNC路徑的一部分並放入一個變量?

示例路徑是 - >\\ourfileserver\remoteuploads\countyfoldername\personfoldername

如何剝離只是countyfoldername出來的呢?

我曾想過嘗試

var th = e.FullPath.LastIndexOf('\\'); 
     var whichFolder = folderPath.Substring(th); 

但是這是一個轉義字符,它不喜歡@無論是。

這是否是正確的方向?


我想我有些困惑。 LastIndexOf不起作用,因爲我需要countyfoldername,在我的示例中,它出現3/4。

此外,我需要countyfoldername存儲在一個變量,而不是文件名本身。

爲了給出一些上下文,我有一個運行在服務中的FileSystemWatcher。它正在監視單個文件夾路徑並在文件被創建時通過電子郵件發送。現在我需要修改它。該文件夾路徑中現在有4個縣級文件夾,我需要根據創建文件的位置將電子郵件發送到其他電子郵件地址。

我可以使用一個簡單的switch語句,如果我能弄清楚如何可靠地獲取縣文件夾名稱。

感謝

+0

您的更新代碼應該可以工作,我已經使用了很多次。 – jsmith 2010-05-03 13:35:30

回答

5

實際上,您應該使用Uri類並將其分爲多個段。

Uri uri = new Uri(@"\\ourfileserver\remoteuploads\countyfoldername\personfoldername"); 
    Console.WriteLine(uri.Segments[3]); // personfoldername 
    Console.ReadLine(); 
+2

PS:當你抓取一個Segment時,它是以轉義格式。例如。 「我的文件夾」將顯示爲「我的%20Folder」。需要調用靜態方法Uri.UnescapeDataString來獲取實際名稱。 – dotnetguy 2013-02-12 12:34:34

1

你嘗試:

var myCounty = e.FullPath.LastIndexOf("\\"); 

更新: 爲了得到該國的文件夾名稱,只是剪掉從縣發現的字符數查找,然後再做另一最後指數..

+0

有單引號嗎?只是檢查不char的使用單一?謝謝 – 2010-05-03 13:31:10

+0

不會持續返回一個整數嗎?他不需要從lastindexof開始抓取子字符串嗎? – jsmith 2010-05-03 13:32:04

+0

是的,我的計劃是做這樣的事情 - >'var th = e.FullPath.LastIndexOf('\\'); var whichFolder = folderPath.Substring(th);'除非有更好的方法... – 2010-05-03 13:33:33

1

你需要從LastIndexOf創建一個字符串( 「\」)

看起來類似:

var folderName = e.FullPath.Substring(e.FullPath.LastIndexOf("\\")); 
2

串夾= System.IO.Path.GetFileName(FULLPATH)

完整文檔here

0

我認爲你應該分裂。

string[] Sep= {"\\"} 

string[] Folders; 
Folders= folderPath.Split(NewLine, StringSplitOptions.RemoveEmptyEntries); 

您可以遍歷數組並且完全控制字符串。

相關問題