簡體   English   中英

C#中的CultureInfo

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM