2016-05-10 2 views
0

У меня есть местоположение файла формы FileName = "C: \ Data \ PronetContent \ Content \ Versions \ 14602 \ Working \ 1234.htm"Extract часть строки до разделителя символа "/"

I требуется часть строки, кроме имени файла HTM - 1234.htm

Таким образом, мой желаемый результат "C: \ Data \ PronetContent \ Content \ Версия \ 14602 \ Working"

Я реализовал этот код фрагмент:

string[] fileLocation = FileName.Split('/'); 
string[] fileLocation1 = fileLocation.Take(fileLocation.Count() - 1).ToArray(); 
string Floc = string.Join("/", fileLocation1); 

Но я получаю пустую строку. Пожалуйста, помогите

+3

Таким образом, вы имеете дело с путями - почему бы не использовать класс 'System.IO.Path' с его статическими методами? Они решают именно эту проблему ... Другое дело: пожалуйста, не используйте 'string.Join' или - в общем говоря - объединение ссылок для создания путей - скорее используйте' System.IO.Path.Combine' –

+0

['Path.GetDirectoryName() '] (https://msdn.microsoft.com/en-us/library/system.io.path.getdirectoryname%28v=vs.110%29.aspx) –

+0

Или вы используете' FileInfo' для получения ' FileName' и замените его на '' '' –

ответ

6

Во-первых, используя разделение на/только для окна на основе машин, не разделит вашу строку, потому что его расщепляется \

Вы можете использовать

Path.GetDirectoryName() 

Так,

Path.GetDirectoryName(FileName) 

вернет вашу дорогу

+0

Можете украсить ответ, выделяя различия в среде в разделителе путей. https://msdn.microsoft.com/en-us/library/system.io.path.directoryseparatorchar(v=vs.110).aspx – t0mm13b

+1

@ t0mm13b Класс 'Path' должен реализовать соответствующую логику для системы работающий. В системе на основе * nix, которая использует «\» для разделения путей, символ разделителя устанавливается соответствующим образом, и метод «Path.GetDirectoryName» должен работать. Вы отправили свой комментарий после прочтения первой строки, не прочитав остальную часть ответа? – Corey

+0

@Corey Я удалил свой комментарий и добавил предложенный комментарий, чтобы указать о/и \ независимо от того, как 'Path' обрабатывает различия в качестве напоминания и подталкивает использование строковых хаков для доступа к компонентам каталога. – t0mm13b

0

У вас есть путь Абсолютного пути, поэтому, если вы уверены, что вы wi Всегда будет иметь абсолютный путь, вы можете использовать Path.GetDirectoryName(strPath), как показано ниже:

//absolute path 
var filePath = @"C:\Data\PronetContent\Content\Versions\14602\Working\1234.htm"; 
var pathWithoutFileName = Path.GetDirectoryName(filePath); 
+0

Спасибо за помощь :-) – nseries73

+0

@ nseries73 Я думаю, любой из нас здесь был бы признателен, если бы вы приняли ответ, который вам помог. –

Смежные вопросы