2012-06-20 22 views
7

मेरे पास एक ऐसा एप्लिकेशन है जहां मैं देश की मूल मुद्रा स्वरूपण का उपयोग करके मुद्रा को प्रारूपित करना चाहता हूं। समस्या यह है कि, कुछ देश कई मुद्राओं का उपयोग करते हैं, लेकिन .NET केवल प्रति देश एक मुद्रा निर्दिष्ट करता है। उदाहरण के लिए, रोमानियाEUR और RON का उपयोग करता है।मैं उन देशों को कैसे संभाल सकता हूं जो .NET में एकाधिक मुद्राओं का उपयोग करते हैं?

var cultureInfo = new CultureInfo("ro-RO"); 
Console.WriteLine("cultureInfo.NumberFormat.CurrencySymbol); 

उत्पादन leu है, जो रॉन मुद्रा प्रकार है: जब मैं नेट से मुद्रा जानकारी मिलती है।

मुझे .NET में इस मामले के लिए EUR कैसे मिलेगा? मेरे पास 3-अक्षर आईएसओ मुद्रा कोड है (EUR) और देश की भाषा (ro-RO) लेकिन मुझे नहीं पता कि सही ढंग से स्वरूपित यूरो मुद्रा स्ट्रिंग प्राप्त करने के लिए इस जानकारी का उपयोग कैसे करें।

+2

रोमानिया के बजाय मुद्रा की जानकारी अभी तक यूरो का उपयोग कर देशों के बीच नहीं है प्राप्त करना चाहते हैं। .NET मुद्रा को सही तरीके से प्रदर्शित कर रहा है। यूरो मुद्रा का उपयोग कर यूरोपीय संघ के राज्यों के साथ यूरोपीय संघ के राज्यों को भ्रमित न करें, यह वही नहीं है। वे सूचियां 100% बराबर नहीं हैं, क्योंकि कई देश अभी भी यूरो (उदाहरण के लिए ग्रेट ब्रिटेन) का उपयोग नहीं करते हैं। – walther

+0

सच है, लेकिन हम रोमानिया और ब्रिटेन में यूरो भुगतान का समर्थन करते हैं, उदाहरण के लिए। यद्यपि वे देश द्वारा 'मानकीकृत' नहीं हो सकते हैं, प्रैक्टिस में उनका उपयोग किया जाता है और इसलिए हमें उनका समर्थन करना चाहिए। –

+0

मुझे लगता है कि अगर यह 'मानकीकृत' नहीं है तो .NET के बारे में जानने का कोई तरीका नहीं है। (यह तब तक है जब तक आप इसे स्पष्ट रूप से कोड नहीं करते) –

उत्तर

1

आप एक कस्टम एक के साथ मुद्रा प्रतीक की जगह ले सकता है (इस मामले में यूरो को लेउ)

NumberFormatInfo LocalFormat = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone(); 
LocalFormat.CurrencySymbol = "€"; 

decimal money = 100; 
Console.WriteLine(money.ToString("c", LocalFormat)); 
0

मैंने सोचा कि मैं आप निम्नलिखित की तरह एक स्थिर सहायक वर्ग जवाब दे चाहते हैं:

static class CurrencySymbolHelper 
{ 
    public static string GetCurrencySymbol(CultureInfo cultureInfo, bool getAlternate) 
    { 
     if (cultureInfo.Name == "ro-RO" && getAlternate) 
       return "EUR"; 

     return cultureInfo.NumberFormat.CurrencySymbol; 
    } 
} 

आप विधि में जो भी वैरिएबल चाहते हैं उसे पास कर सकते हैं और अपनी इच्छानुसार किसी भी ऑपरेशन कर सकते हैं। निम्नलिखित के रूप में कॉल करें:

var cultureInfo = new CultureInfo("ro-RO"); 
Console.WriteLine(CurrencySymbolHelper.GetCurrencySymbol(cultureInfo,false)); 

जारी करना है, तो आप इस सहायक कॉल करनी होगी जब कभी आप cultureInfo.NumberFormat.CurrencySymbol