2010-01-21 41 views
6

Giả sử tôi có số string và giá trị của string là số tiền, được địa phương hóa. Theo địa phương hóa, tôi có nghĩa là nếu quốc gia có thể sử dụng dấu phẩy thay vì dấu thập phân, chẳng hạn. (Đó chỉ là một sự khác biệt địa phương hóa mà tôi biết nếu.).NET: Phân tích tiền tệ được bản địa hóa

Làm cách nào để phân tích một trong các số string s này thành số decimal s tương đương của chúng? Sẽ decimal.TryParse() nhận dạng được định dạng được bản địa hóa? Làm cách nào để chỉ định CultureInfo với TryParse()?

Trả lời

7

Dưới đây là một ví dụ về decimal.TryParse với một quy định CultureInfo (Thụy Điển trong trường hợp này):

string s = "10,95"; 
decimal d; 
if (decimal.TryParse(s, NumberStyles.Number, CultureInfo.GetCultureInfo("sv-SE"),out d)) 
{ 
    Console.WriteLine(d); 
} 
0

Các decimal.TryParse đi kèm với 2 quá tải. Một trong số đó có các thông tin văn hóa như là đối số (các CultureInfo thực hiện IFormatProvider):

System.Decimal.TryParse(string s, System.Globalization.NumberStyles style, System.IFormatProvider provider, out decimal result) 

Một trong những khác có lẽ ít hơn nhiều và sử dụng hệ thống CultureInfo:

System.Decimal.TryParse(string s, out decimal result) 

Tôi không hoàn toàn chắc chắn, nhưng tôi nghĩ bạn có thể đặt văn hóa hệ thống hiện tại bằng cách:

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("sv-SE"); 
Các vấn đề liên quan