Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Проверка правильности строки с путем  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Хотелось бы:

юзер вводит руками путь (локальный или сетевой), хотелось бы проверить является ли эта строка путём, без физического доступа к пути.

Регулярное выражение?
24 янв 19, 12:37    [21793201]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
256k
Регулярное выражение?
да. Только нафиг надо это делать на ввод каждой буквы и копи пасты.
24 янв 19, 12:48    [21793223]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Petro123
256k
Регулярное выражение?
да. Только нафиг надо это делать на ввод каждой буквы и копи пасты.


почему каждой буквы - после ввода всего пути.
Например, юзер вводит путь в некие сеттинги, можно проверить физически наличие пути, но это длинная операция, хотелось бы в первом приближении, если путь явно кривой синтаксически - дать ошибку.
24 янв 19, 13:15    [21793275]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
256k
юзер вводит путь в некие сеттинги
выбирать в диалоге проще. Зачем заставлять писать путь с завязанными глазами?
24 янв 19, 13:34    [21793300]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
256k,
2. Это не мыло и не телефон для такой валидации.
24 янв 19, 13:35    [21793302]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26878
256k,

https://stackoverflow.com/questions/6416065/c-sharp-regex-for-file-paths-e-g-c-test-test-exe
24 янв 19, 13:56    [21793334]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3604
private static readonly string IllegalChars = @"^(?:[\w]\:|\\)(\\[a-z_\-\s0-9\.]+\\?)+$";
public static bool ValidatePath(string path)
{
	if (string.IsNullOrWhiteSpace(path)) return false;
	return Regex.IsMatch(path, IllegalChars,
		RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
}
Не эталон, но проверит правильность локальных и сетевых петуй
24 янв 19, 14:01    [21793345]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Petro123
256k
юзер вводит путь в некие сеттинги
выбирать в диалоге проще. Зачем заставлять писать путь с завязанными глазами?


ты слишком прямолинеен, не везде, где есть c# может быть диалог
24 янв 19, 14:45    [21793404]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Roman Mejtes
private static readonly string IllegalChars = @"^(?:[\w]\:|\\)(\\[a-z_\-\s0-9\.]+\\?)+$";
public static bool ValidatePath(string path)
{
	if (string.IsNullOrWhiteSpace(path)) return false;
	return Regex.IsMatch(path, IllegalChars,
		RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
}
Не эталон, но проверит правильность локальных и сетевых петуй


именно то, что мне надо, но вот вопрос:

\\d-comp11\мои файлы - false
\\d-comp11\My Files - true
24 янв 19, 14:50    [21793413]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Konst_One
Member

Откуда:
Сообщений: 11493
регулярку поправь для русских буковок
24 янв 19, 14:56    [21793420]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Konst_One
регулярку поправь для русских буковок


это-то можно сделать, то как быть с французскими? немецкими? и т.д.
пытаться все запихнуть в регулярное выражение?
24 янв 19, 15:03    [21793433]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Konst_One
Member

Откуда:
Сообщений: 11493
вам виднее, для меня это вообще абсурдный код
24 янв 19, 15:04    [21793435]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3604
допилите Reg выражение просто, оно не поддерживает русские буквы
вроде как \w включает символы допустимые в пути, но всё равно в этой проверки кое каких символов может нехватать.
можно как вариант проверять не на допустимость символов, а не допустимость. то есть искать символы запрещенные в путях, это будет более верный путь.
исправлено под ваши хотелки:
@"^(?:[\w]\:|\\)(\\[\w_\-\s\.]+\\?)+$"
24 янв 19, 15:04    [21793438]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
256k
ты слишком прямолинеен, не везде, где есть c# может быть диалог
если я прямолинеен как хирург, то ты неопытен в постановке как джун.
У тебя консоль без OpenDialog?
Что мешает проверить реальный путь?
Неужели "не везде есть компьютер"?
24 янв 19, 15:06    [21793445]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Roman Mejtes
искать символы запрещенны
+1
24 янв 19, 15:07    [21793447]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Konst_One
вам виднее, для меня это вообще абсурдный код
ты прямолинеен). Надо дипломатичнее)
24 янв 19, 15:09    [21793449]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3604
Petro123,
с чего вы взяли, что вводимый путь физически доступен и существует возможность проверки его существования,
нигде в постановке этого не сказано, в самой проверке нет ничего плохого, она избыточно, но в этом нет ничего плохого.

тоже самое, когда проверяют файл на существование перед открытием и кидают исключение.. какой в этом смысл, если файл при открытии кинет исключение, если его не существует? такой пример проверки хуже, чем делает автор, возможно автор просто делает валидатор формы и хочет отображать поля, которые имеют невалидное значение
24 янв 19, 15:12    [21793460]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Konst_One
Member

Откуда:
Сообщений: 11493
я думаю ТС хочет конфиги чекать в своём сервисе, которые кто-то в онлайне портит
24 янв 19, 15:14    [21793468]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Konst_One
Member

Откуда:
Сообщений: 11493
поэтому такую проверку считаю бессмысленной, надо контролировать исключение при доступе к файлу/директории по указанному пути
24 янв 19, 15:15    [21793470]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3604
Konst_One
поэтому такую проверку считаю бессмысленной, надо контролировать исключение при доступе к файлу/директории по указанному пути

такая проверка не имеет смысл при непосредственном доступе к файлу или пути, но если это просто значение на форме, проверка вполне имеет смысл.
24 янв 19, 15:18    [21793474]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Roman Mejtes,
Почитай ответ Konst_One
24 янв 19, 15:19    [21793478]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Roman Mejtes
она избыточно, но в этом нет ничего плохого.
вот я и говорю ИЗБЫТОЧНО.
24 янв 19, 15:20    [21793486]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Petro123
256k
ты слишком прямолинеен, не везде, где есть c# может быть диалог
если я прямолинеен как хирург, то ты неопытен в постановке как джун.
У тебя консоль без OpenDialog?
Что мешает проверить реальный путь?
Неужели "не везде есть компьютер"?


Прямолинеен, как херурк задостанов

Кто сказал, что у меня консоль?
" Что мешает проверить реальный путь?" :
Заратустра не позволяет!

1. можно, но только в частности
2. это долго
3. может не быть прав
4. может не быть прав в этот момент
5. пример: юзер вводит путь скриптом в базу, тем более в базу в туче.
6. ...

Пэдро, тщательнее надо бы

Вопрос о шарповой функции, на вход которой идте строка с путем, а она отвечает, путь это или нет, хотя бы приблизительно.
24 янв 19, 15:30    [21793508]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3604
^(?:[a-z]\:|\\)(\\[\w\-\s\.]+\\?)+$

думаю вот такой вариант будет наилучшим вариантом.
на счет названий дисков, если мне не изменяет память, то в DOS после Z диска шел диск AA, AB,AC и т.д. На счет windows не уверен, но думаю это не очень критично
24 янв 19, 15:42    [21793534]     Ответить | Цитировать Сообщить модератору
 Re: Проверка правильности строки с путем  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
256k,
Ты работай и не отвлекайся. Даже с херовой постановкой задачи которуюСамСебеПридумал.
24 янв 19, 15:48    [21793546]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / WinForms, .Net Framework Ответить