復合格式字串

2021-06-09 15:47:55 字數 4213 閱讀 7203

.net framework 復合格式化功能使用物件列表和復合格式字串作為輸入。復合格式字串由固定文字和索引佔位符混和組成,其中索引佔位符稱為格式項,對應於列表中的物件。格式化操作產生的結果字串由原始固定文字和列表中物件的字串表示形式混和組成。

復合格式字串和物件列表將用作支援復合格式化功能的方法的引數。復合格式字串由零個或多個固定文字段與乙個或多個格式項混和組成。固定文字是所選擇的任何字串,並且每個格式項對應於列表中的乙個物件或裝箱的結構。復合格式化功能返回新的結果字串,其中每個格式項都被列表中相應物件的字串表示形式取代。

可考慮使用以下format**段。

string myname = "

fred

";string.format("

name = , hours =

", myname, datetime.now);

固定文字為「name = 」和「, hours = 」。格式項為「」和「」,前者的索引為 0,對應於物件myname,後者的索引為 1,對應於物件datetime.now。

每個格式項都採用下面的形式幷包含以下元件:

必須使用成對的大括號(「」)。

強制「索引」元件(也叫引數說明符)是乙個從 0 開始的數字,可標識物件列表中對應的項。也就是說,引數說明符為 0 的格式項格式化列表中的第乙個物件,引數說明符為 1 的格式項格式化列表中的第二個物件,依次類推。

通過指定相同的引數說明符,多個格式項可以引用物件列表中的同乙個元素。例如,通過指定類似於「 」的復合格式字串,可以將同乙個數值格式化為十六進製制、科學記數法和數字格式。

每個格式項都可以引用列表中的任一物件。例如,如果有三個物件,則可以通過指定類似於「 」的復合格式字串來格式化第

二、第一和第三個物件。格式項未引用的物件會被忽略。如果引數說明符指定了超出物件列表範圍的項,將導致執行時異常。

可選的「對齊」元件是乙個帶符號的整數,指示首選的格式化字段寬度。如果「對齊」值小於格式化字串的長度,「對齊」會被忽略,並且使用格式化字串的長度作為字段寬度。如果「對齊」為正數,欄位中的格式化資料為右對齊;如果「對齊」為負數,欄位中的格式化資料為左對齊。如果需要填充,則使用空白。如果指定「對齊」,就需要使用逗號。

可選的「格式字串」元件是適合正在格式化的物件型別的格式字串。如果相應物件是數值,則指定數字格式字串,如果相應物件是 datetime 物件,則指定日期和時間格式字串

,或者如果相應物件是列舉值,則指定列舉格式字串

。如果不指定「格式字串」,則對數字、日期和時間或者列舉型別使用常規(「g」)格式說明符。如果指定「格式說明符」,需要使用冒號。

左大括號和右大括號被解釋為格式項的開始和結束。因此,必須使用轉義序列顯示文字左大括號或右大括號。在固定文字中指定兩個左大括號 ("}") 以顯示乙個右大括號 ("}")。按照在格式項中遇到大括號的順序依次解釋它們。不支援解釋巢狀的大括號。

解釋轉義大括號的方式會導致意外的結果。例如,考慮要顯示乙個左大括號、乙個格式化為十進位制數的數值和乙個右大括號的格式項「}}」。但是,實際是按照以下方式解釋該格式項:

前兩個左大括號 ("}") 生成單個大括號。由於得到的字串 ("d}") 不是標準數值格式說明符號,所以得到的字串會被解釋為用於顯示字串「d}」的自定義格式字串。

最後乙個大括號 ("}") 被解釋為格式項的結束。

顯示的最終結果是字串「」。不會顯示本來要格式化的數值。

在編寫**時,避免錯誤解釋轉義大括號和格式項的一種方法是單獨格式化大括號和格式項。也就是說,在第乙個格式化操作中顯示文字左大括號,在下一操作中顯示格式項的結果,然後在最後乙個操作中顯示文字右大括號。

如果要格式化的值是null(在 visual basic 中為nothing),則返回空字串 ("")。

如果要格式化的型別實現 icustomformatter 介面,則呼叫 icustomformatter.format 方法。

如果前面的步驟未格式化型別,並且該型別實現 iformattable 介面,則呼叫 iformattable.tostring 方法。

如果前面的步驟未格式化型別,則呼叫該型別的tostring方法(從 object 類繼承而來)。

前面的步驟執行完畢之後應用對齊。

下面的示例顯示使用復合格式化建立的乙個字串和使用物件的tostring方法建立的另乙個字串。兩種格式化型別產生相同的結果。

string formatstring1 = string.format("

", datetime.now);

string formatstring2 = datetime.now.tostring("

dddd mmmm

");

假定當前日期是五月的星期四,在美國英語區域性中上述示例中的兩個字串的值都是 thursday may。

console.writelinestring.format公開相同功能。兩種方法的唯一差異是string.format將其結果作為字串返回,而console.writeline將結果寫入與console物件關聯的輸出流。下面的示例使用console.writeline方法將 myint 的值格式化為貨幣值。

int myint = 100;

console.writeline("

", myint);

此**在當前區域性為美國英語的計算機上,將 $100.00 顯示到控制台。

下面的示例說明格式化多個物件,包括用兩種不同的方式格式化乙個物件。

string myname = "

fred

";string.format("

name = , hours = , minutes =

", myname, datetime.now);

以上字串的輸出是「name = fred, hours = 07, minutes = 23」,其中當前的時間反映了這些數字。

下列示例說明了對齊在格式化中的使用。格式化的引數放置在豎線字元 (|) 之間以突出顯示得到的對齊。

string myfname = "

fred

";string mylname = "

opals

";int myint = 100;

string formatfname = string.format("

first name = ||

", myfname);

string formatlname = string.format("

last name = ||

", mylname);

string formatprice = string.format("

price = ||

", myint);

console.writeline(formatfname);

console.writeline(formatlname);

console.writeline(formatprice);

formatfname = string.format("

first name = ||

", myfname);

formatlname = string.format("

last name = ||

", mylname);

formatprice = string.format("

price = ||

", myint);

console.writeline(formatfname);

console.writeline(formatlname);

console.writeline(formatprice);

在美國英語區域性中,上述**將下列內容顯示到控制台。不同的區域性顯示不同的貨幣符號和分隔符。
first name = |          fred|

last name = | opals|

price = | $100.00|

first name = |fred |

last name = |opals |

c 的復合格式字串(Format)

net framework 復合格式化功能使用物件列表和復合格式字串作為輸入。復合格式字串由固定文字和索引佔位符混和組成,其中索引佔位符稱為格式項,對應於列表中的物件。格式化操作產生的結果字串由原始固定文字和列表中物件的字串表示形式混和組成。諸如 format 等方法以及 writeline 和 t...

CSDN 復合格式

net framework 復合格式設定功能使用物件列表和復合格式字串作為輸入。復合格式字串由固定文字和索引佔位符混和組成,其中索引佔位符稱為格式項,對應於列表中的物件。格式設定操作產生的結果字串由原始固定文字和列表中物件的字串表示形式混和組成。每個格式項都採用下面的形式幷包含以下元件 必須使用成對...

數算 合格的字串 字串

合格的字串 題目內容 老師給布置了一些作業,讓學生按照乙個模版寫一些字串交上來。現在請你幫老師寫乙個程式,幫助老師確定各個字串是否合格。首先老師有乙個匹配模版,比如是 aa 123 bb 這乙個字串,如aa1bb aa2bb aa3bb都算是正確匹配,而aacbb就是錯誤的字串。即待查字串對應於模版...