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
Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top