iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 14
2

好的,包含上一篇你應該已經看到我提了兩次String.Format,所以到底什麼是String.Format?

簡單來說就是跟字面上的意思一樣,用來處理字串的格式,或是根據指定的格式將物件的值轉換為字串,並將它們插入到另一個字串的方法。

你可以透過String.Format建立格式字串、控制字串格式、自訂字串格式...等

以下介紹一些常用的地方:

插入字串

開頭為格式字串, 後面接著一個或多個物件或運算式, 會轉換成字串後插入格式字串中的指定位置。

int amount = 14;
String s = String.Format("這是今年吃的第{0}顆柚子",amount);
Console.WriteLine(s);
//這裡會輸出這是今年吃的第14顆柚子

{0}是代表後方第一個物件(參數)的索引值,索引值從0開始。{1}就是代表後方第二個物件(參數)的意思。如果要插入的物件不是字串, 則會呼叫ToString的方法, 將它轉換成字串, 然後將它插入結果字串中。
我說吃這麼多柚子真的好嗎(欸)

這個寫法是不是很眼熟?是的,在這篇文章中有提到,Console.WriteLine已經將String.Format整合在overload裡面,所以Console.Write()、Console.WriteLine()也可以直接這樣用唷~

C#6中新增String Interpolation功能,也就是好棒棒的$字號!!!(閃亮亮)能進一步簡化string.Format的寫法。
所以上面那一段可以改寫為

int amount = 14;
String s = $"這是今年吃的第{amount}顆柚子";
Console.WriteLine(s);
//這裡會輸出這是今年吃的第14顆柚子

最簡寫法為:

int amount = 14;
Console.WriteLine($"這是今年吃的第{amount}顆柚子");

是不是很清爽又直覺呢=ˇ=

插入字串這個方式是字串中的格式專案。格式專案語法:

{index,alignment:formatString}
{1,15:C3}--->表示取第2個參數值,字元長度15,小數3位,加錢幣符號,靠右

一個大括號裡面就包含了這麼多密碼,484 magic!!!!!XD

  • index:此位置以零為起始的索引值,後面第幾個物件的意思。
  • alignment:不一定要有。此位置填入帶正負號的整數。表示要插入引數的欄位總長度, 以及它是否為靠右對齊 (正整數) 或靠左對齊 (負整數)。
  • formatString:不一定要有。此位置用來指定對應引數之結果字串的格式。

控制間距

寫在alignment的位置。
{0,12}代表插入12個字元的字串,寬度12個字元的意思。預設靠右對齊。如果第一個物件的字串表示長度超過12個字元, 則會忽略寬度, 並將整個字串插入結果字串中。

預設靠右對齊:

https://ithelp.ithome.com.tw/upload/images/20190914/20120055GOiCFxmM6o.png

因為超過6個位元,所以忽略6這個寬度限制:

https://ithelp.ithome.com.tw/upload/images/20190914/20120055iIIPj37VUh.png

控制對齊

寫在alignment的位置。若要將欄位中的字串靠左對齊, 可以在欄位寬度前面加上負號,如:{0,-12}

加上負號,靠左對齊
https://ithelp.ithome.com.tw/upload/images/20190914/20120055sIZ4XczSG3.png

控制格式

寫在formatString的位置。

可以在格式專案中的索引後面加上格式字串, 以控制物件的格式化方式。例如{0:d}會將 "d"格式字串套用至物件清單中的第一個物件。
標準輸出格式如下:

https://ithelp.ithome.com.tw/upload/images/20190914/20120055pVXeR1TLaN.png

https://ithelp.ithome.com.tw/upload/images/20190914/20120055SZv9Aj90HJ.png

資料來源參考:https://dotblogs.com.tw/marcus116/2012/03/11/70655

自訂格式

當然很多時候我們會希望輸出我們自訂的格式~
https://ithelp.ithome.com.tw/upload/images/20190914/201200553m3Lkk0PA4.png

日期與時間類
https://ithelp.ithome.com.tw/upload/images/20190914/20120055oSv207kQXM.png

資料來源參考:https://dotblogs.com.tw/marcus116/2012/03/11/70655

知道怎麼自訂格式之後,輸出的結果是不是覺得更能掌控了呢XD

更多String.Format的部分可以參考官方文件喔~


參考資料

MSDN-String.Format Method
m@rcus學習筆記-string.Format格式整理
阿沙布魯-朝風呂-自訂數值格式字串簡述
Neil(After Work)-C# string.Format() 自訂數值格式
$-字串插補C#(參考)


上一篇
Day13-C#的無條件進入、無條件捨去、跟你想的不一樣的四捨五入!(補充:怎麼對小數點後某位數作無條件捨去或是無條件進入?)
下一篇
Day15-C#-for迴圈VS foreach(例:經典九九乘法表/排版後的九九乘法表)
系列文
C#與ASP.Net入門-我要成為工程師!!31

尚未有邦友留言

立即登入留言