2011-09-21 3 views
3

У меня есть имя файла, которые выглядят как, что это лучший способ, чтобы разбить строку

Directory \ имя-secondName-blabla.txt

Если я с помощью строки .split моего кода нужно знаю разделитель, который я использую, Но если через какое-то время я заменил разделитель, мой код сломается

Является ли какая-либо сборка способом разделения, чтобы получить следующий результат?

Directory 
name 
secondNmae 
blabla 
txt 

Благодаря

Редактировать Мой вопрос является более общим, чем просто разделенным имя файла, раскалывается строка в общем

+0

не мог Вы просто используете функцию, которая вызывает split и чей один из ее аргументов является разделителем? – Mansuro

+1

Человек, попробуйте найти немного SO: http://stackoverflow.com/questions/2742688/getting-file-name-from-the-string http://stackoverflow.com/questions/1105593/get-file -name-from-uri-string-in-c http://stackoverflow.com/questions/401304/c-how-do-extract-each-folder-name-from-a-path http://stackoverflow.com/questions/3736462/c-getting-the-folder-name-from-a-path – Samich

+2

Я думаю, что все, кажется, не правильно прочитали этот вопрос! –

ответ

8

Лучшим способом разделить файла является использование System.IO.Path

Вы не знаете, что делать с directory1\directory2\,
, но в целом вы должны использовать этот статический класс, чтобы найти путь , имя и суффикс детали.

После этого вам понадобится String.Split() для обработки разделителей -, вам просто нужно будет установить разделитель (ы) в настройках конфигурации.

+0

Легко получить имя файла, но не то, о чем спрашивал ОП. –

+0

@Henk см. Мое обновление на вопрос – user956962

+0

@Tim B: Именно поэтому имя файла было выделено курсивом –

0
var filepath = @"Directory\name-secondName-blabla.txt"; 
var tokens = filepath.Split(new[]{'\\', '-'}); 
0

Если вы беспокоитесь о своем разделительного маркера изменения в будущем, установить его в качестве константы в файле настроек, так что вы должны изменить только в одном месте. Или, если вы думаете, что он собирается регулярно меняться, поместите его в конфигурационный файл, чтобы вам не приходилось выпускать новые сборки каждый раз.

2

Вы можете сделать массив: сепаратора обеспечивают

string value = "Directory\name-secondName-blabla.txt"; 
char[] delimiters = new char[] { '\\', '-', '.' }; 
string[] parts = value.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); 
Смежные вопросы