Teste para um caminho sintaticamente correto
-
08-07-2019 - |
Pergunta
No .NET existe uma função que testa se uma string é sintaticamente um caminho correto? Eu especificamente não quero isso para testar se o caminho realmente existe.
a minha opinião atual sobre esta é uma regex:
([a-zA-Z]:|\\)?\\?([^/\\:*?"<>|]+[/\\])*[^/\\:*?"<>|]*
jogos:
c:\
bbbb
\\bob/john\
..\..\
rejeitos:
xy:
c:\\bob
Solução
Eu sugiro apenas usando um regex para isso desde que você especificamente não quer testar se o caminho existe.
O Aqui algo google me ajudou a desenterrar :
RegEx="^([a-zA-Z]\:|\\\\[^\/\\:*?"<>|]+\\[^\/\\:*?"<>|]+)(\\[^\/\\:*?"<>|]+)+(\.[^\/\\:*?"<>|]+)$"
Você pode combinar isso com System.IO.Path.GetInvalidPathChars () e fazer a regex excluir dinamicamente todos os caracteres inválidos.
Outras dicas
Eu acredito System.IO.Path.GetFullPath (caminho) irá lançar uma exceção se não é um caminho sintaticamente correto sem verificar para ver se ele existe.
Você pode ser capaz de usar a função System.IO.Path e os GetInvalidPathChars ()?