首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 從 URL 取得絕對路徑:Uri.AbsolutePath 一行搞定

     編輯:關於C#

問題情境

給定 URL 字串 "https://job.cnblogs.com/images/job_logo.gif",需提取路徑部分 "/images/job_logo.gif"。限制條件:只能使用 .NET 類庫 API,且追求最簡潔寫法。

嘗試與踩坑

1. System.IO.Path —— 錯誤

Path.GetDirectoryName(url) + "\\" + Path.GetFileName(url);
// 結果:"http:\job.cnblogs.com\images\job_logo.gif"  // 反斜線、協議殘留

Path 類別處理的是檔案系統路徑,不支援 URL 格式,會將 :// 視為路徑分隔符的一部分。

2. System.Web.VirtualPathUtility —— 拋出例外

VirtualPathUtility.GetDirectory(url) + VirtualPathUtility.GetFileName(url);
// ArgumentException:相對虛擬路徑 'http:/job.cnblogs.com/images/job_logo.gif' 不被允許

該類別僅支援應用程式相對路徑(以 ~/ 或 / 開頭),不接受完整 URL。

正解:System.Uri

string path = new Uri(url).AbsolutePath; 
// 直接得到 "/images/job_logo.gif"

Uri 類別其他實用屬性

屬性範例值說明
AbsoluteUrihttps://job.cnblogs.com/images/job_logo.gif完整 URL
Schemehttp協議
Hostjob.cnblogs.com主機名
Port80埠號(預設會顯示)
AbsolutePath/images/job_logo.gif路徑(含前導 /)
Query(空或 ?id=123)查詢字串
Fragment(空或 #section)片段識別碼

進階:取得不含前導斜線的相對路徑

string relativePath = new Uri(url).AbsolutePath.TrimStart('/'); // "images/job_logo.gif"

結論:處理 URL 解析,System.Uri 是 .NET 內建、標準、最可靠的選擇,切勿自行字串切割或誤用檔案路徑 API。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved