找到UNC路径的一部分并放入一个变量?

问题描述:

我试图剥离正在传递的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

实际上,您应该使用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

你尝试:

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

你需要从LastIndexOf创建一个字符串( “\”)

看起来类似:

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

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

完整文档here

我认为你应该分裂。

string[] Sep= {"\\"} 

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

您可以遍历数组并且完全控制字符串。