試煉10 - 還在用字串,組網址 組路徑嗎

2022 鐵人賽文 搬回點部落

開始試煉

網址

處理字串 一直都會再寫程式遇到的試煉
像是要處理網址的時候應該很容易寫出這樣的程式碼
$"https://ithelp.ithome.com.tw/{DateTime.Now.Year}ironman/software-dev".Dump();
用處理文字的角度去 組網址
所以到後來常常組出來的網址 要不少斜線 要不有兩條斜線 各式各樣雖然可以用
但是怕錯誤的網址被組出來
其實有個UriBuilder可以用 程式碼像是這樣

var uriBuilder = new UriBuilder();
uriBuilder.Scheme = "http";
uriBuilder.Host = "abc.com";
uriBuilder.Path = "xyz/index";
var url = uriBuilder.ToString().Dump();

uriBuilder = new UriBuilder(url);
uriBuilder.Path = "test";
url = uriBuilder.ToString().Dump();
var uri = uriBuilder.Uri;
uri.ToString().Dump();

結果會是

http://abc.com/xyz/index
http://abc.com:80/test
http://abc.com/test

就可以產出網址 而不是組出網址

檔案路徑

產生檔案路徑可以用 Path.Combine
範例Code如下

void Main()
{
    var root = @"C:\";
    var mainFolder = @"main";
    var subFolder = @"sub";
    var file = @"abc.pdf";
    Path.Combine(root,mainFolder,subFolder,file).Dump();

    var currentPath = Assembly.GetExecutingAssembly().Location.Dump();
    Path.ChangeExtension(currentPath, "cs").Dump();
    Path.ChangeExtension(currentPath, ".pdf").Dump();
    Path.GetFileName(currentPath).Dump();
    Path.GetFileNameWithoutExtension(currentPath).Dump();
    Path.GetExtension(currentPath).Dump();//注意 會是.pdf喔 有點在前面
    Path.GetPathRoot(currentPath).Dump();
    Path.GetTempPath().Dump();
}

記得自己去跑看看 結果囉

延伸試煉

黑暗執行緒 還有寫一個好用的 FlexUrlEditor 請參考下面連結
CODE–URL調整HTTP/HTTPS、Port、QueryString參數公用函式

結束試煉

組字串之前 可以再想想有沒有更好的辦法

參考
[食譜好菜] 檔案及資料夾的路徑不用自己兜,讓 System.IO.Path 靜態類別來做會方便許多。

UriBuilder 使用手記

如果內容有誤請多鞭策謝謝