2013-02-12 31 views
5

Tôi đã cố gắng thiết lập Văn hóa và Nuôi trồng thủy sản của ứng dụng ASP.NET mà không thành công. Cũng đã thử trong ứng dụng Windows C#.Force .NET để viết các số nguyên bản địa thay vì định dạng Hoa Kỳ

System.Globalization.CultureInfo a = new System.Globalization.CultureInfo("fa-IR"); 
a.NumberFormat.DigitSubstitution = System.Globalization.DigitShapes.NativeNational; 
string Q = string.Format(a, "{0}", 1234567890); // Output 1234567890 instead of ٠١٢٣٤٥٦٧٨٩ 

Có phần nào tôi bị thiếu trong mã không?

+0

Nếu bạn nhìn vào các tài liệu cho [ 'DigitSubstitution'] (http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.digitsubstitution.aspx) tài sản mà bạn có thể nhìn thấy rằng nó không được sử dụng (chưa): _The tài sản DigitSubstitution được dành riêng cho sử dụng trong tương lai. Hiện tại, nó không được sử dụng trong phân tích cú pháp hoặc định dạng các hoạt động cho đối tượng NumberFormatInfo hiện tại._ –

+0

Liên quan: [Tôi có thể thay đổi số tiếng Anh sang biểu diễn tiếng Ả Rập/Ba Tư khi điều khiển được hiển thị không?] (Http://stackoverflow.com/ câu hỏi/10069826/can-i-change-english-number-to-arabic-persian-representations-khi-a-control-is) và [Thay đổi số tiếng Anh sang tiếng Ba Tư và ngược lại trong MVC (httpmodule)?] (http: //stackoverflow.com/questions/13709718/change-english-numbers-to-persian-and-vice-versa-in-mvc-httpmodule) – sloth

Trả lời

3

Không có hỗ trợ trong C#/.Net khuôn khổ cho số đầu ra có chữ số khác 0-9 (cũng không hỗ trợ phân tích cú pháp).

Bạn cần tự tạo số. Bạn có thể định dạng số đầu tiên bằng mã dựng sẵn (để lấy nhóm/số thập phân chính xác/tiền tệ chính xác) và thay thế 0-9 bằng chữ số quốc gia bằng cách sử dụng String.Replace hoặc chữ số bản đồ cho các ký tự bạn cần và tham gia với String.Join.

var converted = String.Join("", 123490.ToString().Select(c => "٠١٢٣٤٥٦٧٨٩"[c-'0'])); 
+0

Cảm ơn bạn. Đánh dấu là câu trả lời –

Các vấn đề liên quan