powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Путь к каталогу получить С слешом, И без слеша.
20 сообщений из 20, страница 1 из 1
Путь к каталогу получить С слешом, И без слеша.
    #38727080
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Есть ли метод, который отформатирует путь к каталогу (переданному в виде строки) добавив, или убрав последний слеш?

Мне нужно оба варианта - т.е. со слешом, и без слеша.

Ни в классе Directory, ни в Path не нашел полезного метода.

Можно конечно свой велосипед написать.... Но..... А хотя пожалуй и начну (раз уж в этом конкурсе 16464428 и не поучаствовал почти)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var PathToFileWithoutSlash = PathToFile.Reverse().SkipWhile 
                (
                    (ch)=> 
                    {
                        if (ch =='\\')
                            return true;
                        else return false;
                    }
                ).Reverse().ToArray();
string myStr = new string(PathToFileWithoutSlash);



ЗЫ. Хотелось бы, все таки, именно библиотечную функцию узнать.
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727081
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В коде, PathToFile и PathToFileWithoutSlash - опечатки.

Имелось ввиду, что путь к директории, а не файлу.
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727105
Artem_Nav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай,

такой вариант:
Код: c#
1.
string pathWithSlash = path.TrimEnd( Path.DirectorySeparatorChar ) + Path.DirectorySeparatorChar;
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727160
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РостигайВ коде, PathToFile и PathToFileWithoutSlash - опечатки.

Имелось ввиду, что путь к директории, а не файлу.А смысл???
Что-то не припомню, чтобы дублирующиеся разделители каталогов вызывали ошибки...
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727170
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ростигай, так как написал ты точно делать не надо. При таком подходе ты создаешь три итератора, один делегат, массив char() и всегда новую строку. Слишком много промежуточных объектов ради простой операции. Я бы сделал так:
Код: c#
1.
2.
3.
4.
5.
public static string AppendDirectorySeparator(string path)
{
	string directorySeparator = Path.DirectorySeparatorChar.ToString();
	return path.EndsWith(directorySeparator) ? path : path + directorySeparator;
}
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727208
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvЧто-то не припомню, чтобы дублирующиеся разделители каталогов вызывали ошибки...

Зато иногда дают интересный эффект

Path.Combine Method (path1,path2,path3)
MSDNpath1 should be an absolute path (for example, "d:\archives" or "\\archives\public"). If path2 or path3 is also an absolute path, the combine operation discards all previously combined paths and resets to that absolute path.
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727217
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallarissphinx_mvЧто-то не припомню, чтобы дублирующиеся разделители каталогов вызывали ошибки...

Зато иногда дают интересный эффект

Path.Combine Method (path1,path2,path3)
MSDNpath1 should be an absolute path (for example, "d:\archives" or "\\archives\public"). If path2 or path3 is also an absolute path, the combine operation discards all previously combined paths and resets to that absolute path.
Даже если не учитывать, что это не единственный "эффект" этого метода, это - другой эффект и для другого случая...
Кстати, "два слэша в начале пути" - не дублированный разделитель каталогов... Хотя на него визуально похож...
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727222
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvДаже если не учитывать, что это не единственный "эффект" этого метода, это - другой эффект и для другого случая...


Например какого случая, если я передаю три параметра, по запаре добавив лишний слэш, а в итоге путь урезается до последнего?
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727255
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallarissphinx_mvДаже если не учитывать, что это не единственный "эффект" этого метода, это - другой эффект и для другого случая...
Например какого случая, если я передаю три параметра, по запаре добавив лишний слэш, а в итоге путь урезается до последнего?Во-первых, "запара" НЕ является уважительной причиной для ошибок программиста. Тем более, что поведение конкретного метода весьма подробно разжевано в документации. Не солидно.

Во-вторых, Вы сослались на "вариант", когда (случайно!) склеиваются абсолютные пути (с учетом корня каталога) - было бы крайне странным ожидать чего-то вменяемого, склеивая @"c:\temp" и @"d:\data". И "два слэша в начале пути" - это тоже абсолютный путь...

В-третьих, я все еще про "лишний" слэш в середине или в конце пути каталогов, который НЕ создает никакаих проблем: что так @"c:\temp\\data", что так @"c:\\temp\data\" или вот так @"c:\\temp\\data\\"
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727260
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvВо-вторых, Вы сослались на "вариант", когда (случайно!) склеиваются абсолютные пути (с учетом корня каталога) - было бы крайне странным ожидать чего-то вменяемого, склеивая @"c:\temp" и @"d:\data".


Пусть будет эксепшн в таком случае

В-третьих, я все еще про "лишний" слэш в середине или в конце пути каталогов, который НЕ создает никакаих проблем: что так @"c:\temp\\data", что так @"c:\\temp\data\" или вот так @"c:\\temp\\data\\"

Если прога лежит в с:\\temp, а юзеру предлагается указать относительную папку для отчетов, и он впишет "\\data", то после Path.Combine получим известно что
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727271
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallarissphinx_mvВо-вторых, Вы сослались на "вариант", когда (случайно!) склеиваются абсолютные пути (с учетом корня каталога) - было бы крайне странным ожидать чего-то вменяемого, склеивая @"c:\temp" и @"d:\data".

Пусть будет эксепшн в таком случаеНе подскажете, где Вы берете драйвера хрустального шара, чтобы разруливать то, что программист (не говоря уже о пользователе) имел ввиду? :)
PallarisВ-третьих, я все еще про "лишний" слэш в середине или в конце пути каталогов, который НЕ создает никакаих проблем: что так @"c:\temp\\data", что так @"c:\\temp\data\" или вот так @"c:\\temp\\data\\"

Если прога лежит в с:\\temp, а юзеру предлагается указать относительную папку для отчетов, и он впишет "\\data", то после Path.Combine получим известно чтоИспользовать в ГУЕ стандарные диалоги, значится, не судьба... Правда, потом (почему-то) жалуемся, что "трехколесный лисапет с квадратными колесами" плохо едет... :)

А вообще... Если пользователь не знает, что такое "относительный" путь, такому пользователю нефиг заниматься администрированием.
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727274
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvНе подскажете, где Вы берете драйвера хрустального шара, чтобы разруливать то, что программист (не говоря уже о пользователе) имел ввиду? :)


А в чем сакральный смысл оставлять только последний кусок пути, если в склеивании указано два абсолютных в параметрах? Вопрос риторический
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727326
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача сама по себе бредовая. На пустом месте создаем себе проблемы и с упорством начинаем с ними бороться.
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727340
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
Может Абдулу надо было брать через шедулер?
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727386
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallarissphinx_mvНе подскажете, где Вы берете драйвера хрустального шара, чтобы разруливать то, что программист (не говоря уже о пользователе) имел ввиду? :)
А в чем сакральный смысл оставлять только последний кусок пути, если в склеивании указано два абсолютных в параметрах? Вопрос риторическийВопрос не сильно-то и риторический: что "последним" ввел, то и получил... По любым логическим соображениям.
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727387
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЗадача сама по себе бредовая. На пустом месте создаем себе проблемы и с упорством начинаем с ними бороться.Уже, типа, намекалось на бессмысленность задачи...
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727388
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ,
Может Абдулу надо было брать через шедулер?И кластер (нод на ...надцать) серверов приложений поднять...
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38727454
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv,
Вот вот, то ли еще будет...
зы:
Тут много с Украины читает.
С праздником вас пацаны !!!
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38728073
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУЗадача сама по себе бредовая. На пустом месте создаем себе проблемы и с упорством начинаем с ними бороться.

Задача то не бредовая.
Я вызываю довольно старую утилитку, переписывать ее никто пока не станет - работает. И для нее критично, чтобы при указании каталога, в конце не было последних слешей. Иначе ей башню сносит.

Моя же утилита тоже является промежуточным слоем, вызывающим эту утилиту по заданным параметрам, а потом обрабатывает полученные результаты и возвращает их.
Я просто хотел сделать обработку входных параметров.
Утилита генерит исключение с совершенно ничего не объясняющим сообщением - если ей случайно передать каталог с завершающим слешем. Поэтому я решил сделать проверку сам, и просто убрать лишний слеш, если его передали в параметры. Я не могу гарантировать, что кто-то не вызовет мою утилиту со слешом, не зная про побочный эффект - да и не зачем кому-то знать про дикие детали какой-то утилитки.


PS. В дельфи есть методы IncludeTrailingBackslash и ExcludeTrailingBackslash для этого.
Я искал подобные методы в BCL, но не нашел. Вот и удивился. Методы то явно полезные и очевидные, бывает и пригождаются. Странно, что их нет в BLC... особенно если учесть, что C# разрабатывал главный разрабатыватель Delphi :)
...
Рейтинг: 0 / 0
Путь к каталогу получить С слешом, И без слеша.
    #38728119
Ростигай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм. string.TrimEnd () успешно решает проблему.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Путь к каталогу получить С слешом, И без слеша.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]