[.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/
