今天在寫代碼時遇到這樣一個問題:
如何從字符串 "http://job.cnblogs.com/images/job_logo.gif" 中得到 "/images/job_logo.gif"?
對這個問題的解決方法的要求是:
1. 只能調用 .NET 類庫中的 API;
2. 用最簡單的方法實現。
開始我想到的是 System.IO.Path,代碼如下:
Path.GetDirectoryName(url) + "\\" + Path.GetFileName(url);
得到的是錯誤的結果:
http:\job.cnblogs.com\images\job_logo.gif
接著想到的是 System.Web.VirtualPathUtility,代碼如下:
VirtualPathUtility.GetDirectory(url) + VirtualPathUtility.GetFileName(url);
運行報錯:
System.ArgumentException : The relative virtual path 'http:/job.cnblogs.com/images/job_logo.gif' is not allowed here.
要將 "http://job.cnblogs.com/images/job_logo.gif" 改為 "/images/job_logo.gif" 才能得到正確的結果。
後來,在 stackoverflow 上受到啟發, 用 System.Uri 輕松搞定!代碼如下:
new Uri(url).AbsolutePath;
本文URL地址:http://www.bianceng.cn/Programming/csharp/201410/45477.htm