Вопрос

В .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()?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top