string.Format 格式化字符串輸出


string.Format實際上是調用目標類的ToString(string format,IFormatProvider formatProvider)方法。

目標類要實現Iformatable接口。實現該方法。

使用格式化調用時有三個參數:string.Format("value is {0,20:N}",v1);

大括號內,

第一個參數是參數的索引號。

第二個參數是分配的字符數。如果為正數則右對齊,為負數左對齊,輸出大於分配字符數則全部輸出。

第三個參數是對像的輸出格式(該格式字符串會被當作ToString的第一個參數format,第二個參數是用於背景上下文,一般傳入null,主要對於windows時區、日期、貨幣等信息)。

public class Point:IFormatable

{

     double x;

     double y;

    public string ToString(string format,IFormatProvider formatProvider)

   {

         if(format==null)  return this.ToString();

         swich(format)

        {

          case N:return string.format("X:{0,20:N},Y:{0,20:N}",x,y);

          case XY:return $"{x},{y}";

          ... ...

         case :.. ...

        }

   }

}

上面自定義的Point類實現了IFormatable接口,就可以使用定義的格式來格式化我們的實例。 例如string.Format("Point Is {0,20:XY}",p1);

 

string.Format("Point1 Is {0,20:XY} Point2 Is {1,20:N}",p1,p2);

執行時,是用stringBuilder生成格式字符串。

過程:

1.使用Point1 Is初始化創建stringBuilder對象。

2.調用stringBuilder的AppendFoamat().他會調用IFormatable接口的ToString(format,privoder); 將p1對象作為實例,冒號后的格式字符串XY,作為format參數,privoder傳入null.

3.stringBuilder.Append(...); //追加字符串Point2 Is

4.AppendFormat(...)//追加第二個格式字符串。 p2為實例,N作為format參數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM