Проверить синтаксически правильный путь - PullRequest
1 голос
/ 21 ноября 2008

В .NET есть функция, которая проверяет, является ли строка синтаксически правильным путем? Я специально не хочу, чтобы он проверял, существует ли путь на самом деле.

мое текущее мнение - это регулярное выражение:

([a-zA-Z]:|\\)?\\?([^/\\:*?"<>|]+[/\\])*[^/\\:*?"<>|]*

соответствует:

c:\
bbbb
\\bob/john\
..\..\

отклоняет:

xy:
c:\\bob

Ответы [ 3 ]

3 голосов
/ 21 ноября 2008

Я полагаю, что System.IO.Path.GetFullPath (путь) сгенерирует исключение, если он не является синтаксически правильным путем, без проверки, существует ли он.

1 голос
/ 21 ноября 2008

Я бы предложил использовать для этого регулярное выражение, поскольку вы специально не хотите проверять, существует ли путь.

Вот что-то Google помог мне откопать :

RegEx="^([a-zA-Z]\:|\\\\[^\/\\:*?"<>|]+\\[^\/\\:*?"<>|]+)(\\[^\/\\:*?"<>|]+)+(\.[^\/\\:*?"<>|]+)$"

Вы можете объединить это с методом System.IO.Path.GetInvalidPathChars () и сделать регулярное выражение динамически исключающим все недопустимые символы.

0 голосов
/ 21 ноября 2008

Возможно, вы сможете использовать System.IO.Path и функцию GetInvalidPathChars ()?

...