Tôi có nhiệm vụ viết đối tượng có thể nhận loại đường dẫn/url khác và trả về loại đường dẫn/url nào. Ví dụ: đường dẫn có thể làĐường dẫn vật lý, tương đối, tuyệt đối và các đường dẫn khác
1. [drive]:\Temp
2. \\Temp
3. Temp (assuming that it relative Temp),
4. /Temp
5. ~/Temp
6. file://[drive]:/Temp
7. file://Temp
8. [scheme]://something/Temp
... v.v.
Tôi làm cách nào để đăng ký C#
nếu đó là đường dẫn vật lý, url tương đối hoặc url tuyệt đối?
Tôi nghĩ rằng nó tương đối dễ dàng để biết nếu nó là tương đối hoặc tuyệt đối uri, nhưng làm thế nào để biết nếu đó là đường dẫn UNC?
Tôi đã cố gắng sử dụng đối tượng Uri và thuộc tính IsUnc, nhưng nó không thực sự giúp tôi .... cho c: \ temp nó trả về false, cho "/ temp", "temp /" và "temp" nó ném một ngoại lệ là định dạng không chính xác. Không tồn tại bất kỳ đối tượng được xây dựng trong .NET 3.5
có thể giúp tôi với điều này, hoặc những thuật toán tôi có thể sử dụng để xác định loại đường dẫn?
Vâng, "/ temp" thực sự không phải là một URI cả. Định dạng chính xác bạn muốn kiểm tra là gì? Nếu đó chỉ là đường dẫn và URI, trước tiên bạn có thể phân biệt giữa chúng và áp dụng các kỹ thuật khác nhau cho từng loại. – Vlad
Tại sao "/ temp" không phải là URI hợp lệ? Tôi nghĩ nó có thể được hiểu là họ hàng. Tôi cần phải kiểm tra tất cả các định dạng đó và quyết định loại đó là ... là đường dẫn UNC hay là đường dẫn URI ... làm cách nào tôi có thể phân biệt giữa chúng? –
Vâng, http://tools.ietf.org/html/rfc3986. Nó không bắt đầu với một lược đồ, ví dụ (http: hoặc file: sẽ làm) – Vlad