Каков наилучший способ разбить строку - PullRequest
3 голосов
/ 21 сентября 2011

У меня есть имя файла, которое выглядит как

Directory \ имя-secondName-blabla.txt

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

Любая сборка способ разделить, чтобы получить следующий результат?

Directory
name
secondNmae
blabla
txt

Спасибо

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

Ответы [ 5 ]

8 голосов
/ 21 сентября 2011

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

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

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

2 голосов
/ 21 сентября 2011

Вы можете создать массив с разделителями:

string value = "Directory\name-secondName-blabla.txt";
char[] delimiters = new char[] { '\\', '-', '.' };
string[] parts = value.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
0 голосов
/ 21 сентября 2011

Как предложил Хенк выше, используйте System.IO.Path и его статические методы, такие как GetFileNameWithoutExtenstion, GetDirectoryName и т. Д. Посмотрите эту ссылку: http://msdn.microsoft.com/en-us/library/system.io.path.aspx

0 голосов
/ 21 сентября 2011

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

0 голосов
/ 21 сентября 2011
var filepath = @"Directory\name-secondName-blabla.txt";
var tokens = filepath.Split(new[]{'\\', '-'});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...