[英]CultureInfo in C#
我的系統是id-ID,使用','作為十進制分隔符。 我在en-US中遇到數據問題,我想將其轉換為id-ID,然后再返回到en-US:
List<string> list = new List<string>(){"0.14","223.54"}; // en-US
list[0] = Convert.ToDecimal(list[0], CultureInfo.InvariantCulture).ToString();
MessageBox.Show("list[0] = " + list[0]); //display "0,14", it is ok!
MessageBox.Show("list[1] = " + list[1]); //display "223,54", it is ok!
現在,我想將其更改回美國文化,只需使用“替換”將“,”更改回“。” 作為美國文化。
MessageBox.Show("list[0] = " + list[0].Replace(",", ".")); //displays "0.14"
但這不是一種優雅的處理方式,我希望可以使用CultureInfo處理它,因此我嘗試了以下語句,但無法正常工作!
CultureInfo us = new CultureInfo("en-US");
list[0] = Convert.ToDecimal(list[0], us).ToString();
list[1] = Convert.ToDecimal(list[1], us).ToString();
MessageBox.Show("list[0] = " + list[0]); //display "14", the decimal separator is missing!
MessageBox.Show("list[1] = " + list[1]); //display "223,54", nothing changed!
美國文化使用逗號作為數字組分隔符。 這是錯誤的原因。 更好的方法是將十進制存儲為十進制。 輸出數據時,請使用必需的區域性:
List<string> stringList = new List<string>() { "0.14", "223.54" };
List<decimal> list = stringList.Select(Convert.ToDecimal).ToList();
MessageBox.Show(list[0].ToString(CultureInfo.InvariantCulture));
MessageBox.Show(list[0].ToString(new CultureInfo("en-US")));
MessageBox.Show(list[0].ToString(new CultureInfo("id-ID")));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.