Найти часть пути UNC и вставить переменную? - PullRequest
1 голос
/ 03 мая 2010

Я пытаюсь очистить последнюю часть проходящего пути unc и поместить его в переменную, чтобы использовать в методе, расположенном ниже.

Пример пути будет -> \\ourfileserver\remoteuploads\countyfoldername\personfoldername

Как мне очистить countyfoldername от этого?

Я думал попробовать

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

но это escape-символ, и ему тоже не нравится @.

Это даже правильное направление?


Я думаю, что запутал некоторых из вас. LastIndexOf не работает, потому что мне нужен countyfoldername, который, в моем примере, происходит на 3/4 пути.

Кроме того, мне нужно countyfoldername, хранящееся в переменной, а не само имя файла.

Чтобы дать некоторый контекст, у меня есть FileSystemWatcher, который работает в службе. Он отслеживал путь к одной папке и отправлял электронные письма, когда там создавался файл. Теперь мне нужно изменить его. Теперь в этом пути к папке находятся 4 папки, и мне нужно отправить электронное письмо на другой адрес электронной почты, в зависимости от того, где был создан файл.

Я могу использовать простой оператор switch, если смогу выяснить, как надежно получить имя папки округа.

Спасибо

Ответы [ 5 ]

5 голосов
/ 03 мая 2010

На самом деле, вы должны использовать класс Uri и разбить его на сегменты.

    Uri uri = new Uri(@"\\ourfileserver\remoteuploads\countyfoldername\personfoldername");
    Console.WriteLine(uri.Segments[3]); // personfoldername
    Console.ReadLine();
2 голосов
/ 03 мая 2010

строковая папка = System.IO.Path.GetFileName (полный путь)

Полная документация здесь .

1 голос
/ 03 мая 2010

Вам необходимо создать подстроку из LastIndexOf ("\")

выглядит примерно так:

var folderName = e.FullPath.Substring(e.FullPath.LastIndexOf("\\"));
1 голос
/ 03 мая 2010

Вы пробовали:

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

Обновление: Чтобы получить название папки страны, просто обрежьте количество символов, найденных в округе, посмотрите, а затем сделайте еще один последний индекс: *

0 голосов
/ 03 мая 2010

Я думаю, что вы должны разделить.

string[] Sep= {"\\"}

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

Вы можете пройти массив и получить полный контроль над строкой.

...