[.NET]在string.Format中,呈現{}左右大括號,及""雙引號
前言
同事發問,在string.Format()中,想要呈現{}大括號,該怎麼做。因為{n}是關鍵字,如果使用{{n}},則呈現的結果會變成:{n}。
另外一個情況是,很多朋友在Console.WriteLine()中,也透過string.Format()來格式化字串。
這一篇文章,就只是介紹一下,在string.Format()中,如何呈現大括號與雙引號。
實作
直接來看程式碼比較快:
internal class Program
{
private static void Main(string[] args)
{
var name = "Bill";
//只用{{0}},出來的結果會變成{0}
Console.WriteLine("{{0}}很帥", name);
//string.format中,沒用@標示字串,需要用{{來標示{,用}}來標示}
var output = string.Format("沒用@標示字串: {{{0}}}很帥", name);
Console.WriteLine(output);
//Console.WriteLine()中就可以直接當做string.Format()使用,方法簽章為public static void WriteLine(string format, params object[] arg);
Console.WriteLine("沒用@標示字串: {{{0}}}很帥", name);
//有用@標示字串,還是得用{{來標示{,用}}來標示}
Console.WriteLine(@"有用@標示字串: {{{0}}}很帥", name);
//沒用@標示字串,需要用\來標示雙引號
Console.WriteLine("沒用@標示字串: \"{0}\"很帥", name);
//有用@標示字串,需要用兩個雙引號,來代表輸出一個雙引號
Console.WriteLine(@"有用@標示字串: ""{0}""很帥", name);
}
}
執行結果
說明
- 在string.Format中,不管有沒有用@來標示字串,都需要用{{來代表呈現{,用}}來代表呈現}。這也說明了,為什麼在string.Format()中,{{n}}出來的結果會是{n}。
-
在Console.WriteLine()中,有一個多載方法,其參數為(string format, params object[] arg),就跟string.Format()的簽章相同。其實就是一樣的效果,所以在Console.WriteLine()中,需要使用到string.Format()最一般的功能,可以直接套用。
by the way, params object[],代表parameter如果為value type,會進行boxing的動作。 - 針對雙引號,有用@標示字串的話,使用兩個雙引號,來代表呈現一個雙引號"。
- 針對雙引號,沒用@標示字串的話,則在雙引號前,要加上\,代表逸出(or 跳脫)字元。
結論
Bill很帥!
blog 與課程更新內容,請前往新站位置:http://tdd.best/