Проверьте синтаксически правильный путь
-
08-07-2019 - |
Вопрос
В .NET есть ли функция, которая проверяет, является ли строка синтаксически правильным путем?Я специально не хочу, чтобы он проверял, действительно ли путь существует.
мой текущий взгляд на это - регулярное выражение:
([a-zA-Z]:|\\)?\\?([^/\\:*?"<>|]+[/\\])*[^/\\:*?"<>|]*
Матчи:
c:\
bbbb
\\bob/john\
..\..\
отвергает:
xy:
c:\\bob
Решение
Я бы предложил просто использовать регулярное выражение для этого, поскольку вы специально не хотите проверять, существует ли путь.
Вот кое-что google помог мне откопать:
RegEx="^([a-zA-Z]\:|\\\\[^\/\\:*?"<>|]+\\[^\/\\:*?"<>|]+)(\\[^\/\\:*?"<>|]+)+(\.[^\/\\:*?"<>|]+)$"
Вы могли бы объединить это с System.IO.Path.Метод GetInvalidPathChars() и заставить регулярное выражение динамически исключать все недопустимые символы.
Другие советы
Я полагаю, что System.IO.Path.GetFullPath(путь) выдаст исключение, если это не синтаксически правильный путь, не проверяя, существует ли он.
Возможно, вы сможете использовать System.IO.Path и функцию GetInvalidPathChars()?