[.NET]在string.Format中,呈現{}左右大括號,及""雙引號

  • 16012
  • 0

[.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);            
        }
    }

執行結果

image

 

說明

  1. 在string.Format中,不管有沒有用@來標示字串,都需要用{{來代表呈現{,用}}來代表呈現}。這也說明了,為什麼在string.Format()中,{{n}}出來的結果會是{n}。
  2. 在Console.WriteLine()中,有一個多載方法,其參數為(string format, params object[] arg),就跟string.Format()的簽章相同。其實就是一樣的效果,所以在Console.WriteLine()中,需要使用到string.Format()最一般的功能,可以直接套用。
    by the way, params object[],代表parameter如果為value type,會進行boxing的動作。
  3. 針對雙引號,有用@標示字串的話,使用兩個雙引號,來代表呈現一個雙引號"。
  4. 針對雙引號,沒用@標示字串的話,則在雙引號前,要加上\,代表逸出(or 跳脫)字元。

 

結論

Bill很帥!


blog 與課程更新內容,請前往新站位置:http://tdd.best/