[英]String formating unexpected result
為什么這兩條線顯示不同的值? 是因為{0:18}”嗎?為什么?謝謝。
Console.WriteLine(value.ToString("C", CultureInfo.GetCultureInfo("da-DK"))); //-12,46 kr.
Console.WriteLine("{0,-18}",value.ToString("C"), CultureInfo.GetCultureInfo("da-DK")); //($12.46)
是因為
{0:18}
嗎?
不。在第一種情況下,您使用“C”格式說明符將值格式化為字符串 a,並使用丹麥文化。
在第二種情況下,您將使用默認區域性的“C”格式說明符將值格式化為字符串 a ......然后將該字符串值包含在另一個格式操作中。 您將丹麥文化作為第二個未使用的格式參數傳遞,但即使您在正確的位置傳遞它,到那時它也無關緊要,因為當您格式化string時,它總是保持原樣,不管的文化。
我懷疑你真的想要這個:
string text = value.ToString("C", CultureInfo.GetCultureInfo("da-DK"));
Console.WriteLine("{0,-18}", text);
或者在一次操作中完成所有字符串格式化:
string text = string.Format(CultureInfo.GetCultureInfo("da-DK"), "{0,-18:C}", value);
Console.WriteLine(text);
(據我所知, Console.WriteLine
沒有允許指定文化的重載。)
在這些調用中,culture 參數的處理方式不同; 對於第一個片段
Console.WriteLine(value.ToString("C", CultureInfo.GetCultureInfo("da-DK")));
我們將value
轉換為string
,將value
視為丹麥( CultureInfo.GetCultureInfo("da-DK")
)的貨幣( "C"
)。 相反對於
Console.WriteLine("{0,-18}",value.ToString("C"), CultureInfo.GetCultureInfo("da-DK"));
我們使用兩個參數有效地調用String.Format
( "{0,-18}"
):
value.ToString("C")
- 作為默認文化(不需要da-DK
)貨幣的value
,因此可以是"15.47$"
CultureInfo.GetCultureInfo("da-DK")
被忽略(格式中沒有{1}
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.