सी # में क्या इस मामले में 'जीबीपी' में 3 वर्ण मुद्रा कोड से '£' की तरह मुद्रा चिह्न प्राप्त करना संभव है?3 मुद्रा चिह्न के लिए डिजिट मुद्रा कोड
क्या यह संभवतः SQL सर्वर या C# में संभव है?
सी # में क्या इस मामले में 'जीबीपी' में 3 वर्ण मुद्रा कोड से '£' की तरह मुद्रा चिह्न प्राप्त करना संभव है?3 मुद्रा चिह्न के लिए डिजिट मुद्रा कोड
क्या यह संभवतः SQL सर्वर या C# में संभव है?
एक सा जानवर बल और नहीं विशेष रूप से सुंदर है, आप इसे इस तरह कर सकता है जबकि:
public bool TryGetCurrencySymbol(string ISOCurrencySymbol, out string symbol)
{
symbol = CultureInfo
.GetCultures(CultureTypes.AllCultures)
.Where(c => !c.IsNeutralCulture)
.Select(culture => {
try{
return new RegionInfo(culture.LCID);
}
catch
{
return null;
}
})
.Where(ri => ri!=null && ri.ISOCurrencySymbol == ISOCurrencySymbol)
.Select(ri => ri.CurrencySymbol)
.FirstOrDefault();
return symbol != null;
}
और उसका उपयोग इस प्रकार है:
string currSymbol;
if(TryGetCurrencySymbol("GBP",out currSymbol))
{
Console.WriteLine("symbol is {0}", currSymbol);
}
आप इस विधि का चोट की आशा है, शायद कैश अप फ्रंट बनाने के लिए बेहतर है:
public static class CurrencyTools
{
private static IDictionary<string,string> map;
static CurrencyTools()
{
map = CultureInfo
.GetCultures(CultureTypes.AllCultures)
.Where(c => !c.IsNeutralCulture)
.Select(culture => {
try{
return new RegionInfo(culture.LCID);
}
catch
{
return null;
}
})
.Where(ri => ri!=null)
.GroupBy(ri => ri.ISOCurrencySymbol)
.ToDictionary(x => x.Key, x => x.First().CurrencySymbol);
}
public static bool TryGetCurrencySymbol(
string ISOCurrencySymbol,
out string symbol)
{
return map.TryGetValue(ISOCurrencySymbol,out symbol);
}
}
लिखने के समय, मेरे मी पर एचिन इत्यादि। मानचित्र में निम्नलिखित मैपिंग हैं:
AED د.إ.
AFN ؋
ALL Lek
AMD դր.
ARS $
AUD $
AZN man.
BAM KM
BDT ৳
BGN лв.
BHD د.ب.
BND $
BOB $b
BRL R$
BYR р.
BZD BZ$
CAD $
CHF fr.
CLP $
CNY ¥
COP $
CRC ₡
CSD Din.
CZK Kč
DKK kr.
DOP RD$
DZD DZD
EEK kr
EGP ج.م.
ETB ETB
EUR €
GBP £
GEL Lari
GTQ Q
HKD HK$
HNL L.
HRK kn
HUF Ft
IDR Rp
ILS ₪
INR रु
IQD د.ع.
IRR ريال
ISK kr.
JMD J$
JOD د.ا.
JPY ¥
KES S
KGS сом
KHR ៛
KRW ₩
KWD د.ك.
KZT Т
LAK ₭
LBP ل.ل.
LKR රු.
LTL Lt
LVL Ls
LYD د.ل.
MAD د.م.
MKD ден.
MNT ₮
MOP MOP
MVR ރ.
MXN $
MYR RM
NIO N
NOK kr
NPR रु
NZD $
OMR ر.ع.
PAB B/.
PEN S/.
PHP PhP
PKR Rs
PLN zł
PYG Gs
QAR ر.ق.
RON lei
RSD Din.
RUB р.
RWF RWF
SAR ر.س.
SEK kr
SGD $
SYP ل.س.
THB ฿
TJS т.р.
TMT m.
TND د.ت.
TRY TL
TTD TT$
TWD NT$
UAH ₴
USD $
UYU $U
UZS so'm
VEF Bs. F.
VND ₫
XOF XOF
YER ر.ي.
ZAR R
ZWL Z$
आप कोड @spender अच्छी तरह से कोड। –
@ स्पेंडर शानदार उत्तर !! – user1799214
@spender, मैं अपने दृष्टिकोण का इस्तेमाल किया और छानने केवल विशिष्ट संस्कृति प्रकार का उपयोग कर आज़माएं/कैच ब्लॉक को हटा दिया है CultureInfo CultureInfo = CultureInfo.GetCultures (CultureTypes.InstalledWin32Cultures | CultureTypes.SpecificCultures)! .FirstOrDefault (ग => c.IsNeutralCulture && सी। एक्वाल्स (CultureInfo.InvariantCulture) && नया RegionInfo (सी.एलसीआईडी)। आईओएसओआरयूआरसीआईएसबीओएल == _currency.IsoLetterCode) ?? CultureInfo.CurrentCulture; –
क्षेत्रइन्फो क्लास में CurrencySymbol property है, इसलिए यह सी # में करने योग्य है। यदि आप एसक्यूएल सर्वर में ऐसा करना चाहते हैं तो आप शायद सी # संग्रहीत प्रक्रिया का उपयोग कर सकते हैं।
RegionInfo regionInfo = new RegionInfo("GB");
Console.WriteLine(regionInfo.CurrencySymbol); // £
रीजनइन्फो क्लास में आईएसओसीआरआरसी सिंबल भी है जो तीन-अक्षर कोड है। तो यह मेरा सुझाव भी होगा। यह चाल उपलब्ध क्षेत्रों से विशेष आईएसओ मुद्रा कोड के साथ क्षेत्र को कुशलतापूर्वक प्राप्त कर रही है। – KeithS
नेट CultureInfo.NumberFormat.CurrencySymbol
CultureInfo us = new CultureInfo("en-US");
CultureInfo gb = new CultureInfo("en-GB");
CultureInfo fr = new CultureInfo("fr-FR");
Console.Out.WriteLine(us.NumberFormat.CurrencySymbol); // $
Console.Out.WriteLine(gb.NumberFormat.CurrencySymbol); // £
Console.Out.WriteLine(fr.NumberFormat.CurrencySymbol); // €
है (आप ISO country codes उपयोग करने की आवश्यकता) लेकिन इस संस्कृति का नाम, नहीं "GBP"
की आवश्यकता है। जहाँ तक मुझे इसके संभावित "GBP"
से सीधे नहीं, आदि के रूप में जानते हैं
यही जानकारी RegionInfo
माध्यम से उपलब्ध है, मुद्रा कोड के साथ:
RegionInfo us = new RegionInfo("en-US");
RegionInfo gb = new RegionInfo("en-GB");
RegionInfo fr = new RegionInfo("fr-FR");
Console.Out.WriteLine(us.CurrencySymbol); // $
Console.Out.WriteLine(gb.CurrencySymbol); // £
Console.Out.WriteLine(fr.CurrencySymbol); // €
Console.Out.WriteLine(us.ISOCurrencySymbol); // USD
Console.Out.WriteLine(gb.ISOCurrencySymbol); // GBP
Console.Out.WriteLine(fr.ISOCurrencySymbol); // EUR
मुझे लगता है एक क़यास है कि इस्तेमाल कर सकते हैं एक के निर्माण के लिए आईएसओ कोड से प्रतीक के लिए मानचित्र।
संस्कृति नामों की सूची उपलब्ध here उपलब्ध है।
संपादित करें:
public static class CurrencyCodeMapper
{
private static readonly Dictionary<string, string> SymbolsByCode;
public static string GetSymbol(string code) { return SymbolsByCode[code]; }
static CurrencyCodeMapper()
{
SymbolsByCode = new Dictionary<string, string>();
var regions = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
.Select(x => new RegionInfo(x.LCID));
foreach (var region in regions)
if (!SymbolsByCode.ContainsKey(region.ISOCurrencySymbol))
SymbolsByCode.Add(region.ISOCurrencySymbol, region.CurrencySymbol);
}
}
उपयोग::
CurrencyCodeMapper.GetSymbol("USD") // $
CurrencyCodeMapper.GetSymbol("GBP") // £
CurrencyCodeMapper.GetSymbol("EUR") // €
नोट, ज़ाहिर है, यह एक व्यापक सूची का उत्पादन नहीं करता है कि खैर यह काम करने लगता है। विशेष रूप से, इसमें पुरानी यूरोजोन मुद्राएं शामिल नहीं हैं जिन्हें यूरो द्वारा हटा दिया गया है। मुझे इसके चारों ओर कोई रास्ता नहीं दिख रहा है, लेकिन यदि आपको उनकी ज़रूरत है तो मैन्युअल रूप से ऐसी मुद्राओं को जोड़ने के लिए, उदाहरण के लिए फ्रेंच फ़्रैंक के लिए SymbolsByCode.Add("FRF", "₣");
।
इस कोड को आज़माएं। 'USD' को मुद्राकोड और अन्य सभी के रूप में दर्ज करें।
public string getCurrencySymbol(string CurrencyCode)
{
string symbol = string.Empty;
CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
IList Result = new ArrayList();
foreach (CultureInfo ci in cultures)
{
RegionInfo ri = new RegionInfo(ci.LCID);
if (ri.ISOCurrencySymbol == CurrencyCode)
{
symbol = ri.CurrencySymbol;
return symbol;
}
}
return symbol;
}
यह विंडोज फोन अनुप्रयोगों पर काम नहीं करेगा के रूप में CultureInfo.GetCultures
मंच पर उपलब्ध नहीं है (कम से कम अभी तक नहीं)। तो यहां एक त्वरित और गंदा समाधान है - जो कि स्पेंडर के उत्तर की मदद से बनाया गया है जिसमें तिथि पर सभी संस्कृति कोड और मुद्राएं शामिल हैं।
public static class CurrencyHelper
{
public static string GetCurrencySymbol(string code)
{
if (Currencies.ContainsKey(code))
{
return Currencies[code];
}
else
{
return code;
}
}
public static Dictionary<string, string> Currencies = new Dictionary<string, string>() {
{"AED", "د.إ."},
{"AFN", "؋ "},
{"ALL", "Lek"},
{"AMD", "դր."},
{"ARS", "$"},
{"AUD", "$"},
{"AZN", "man."},
{"BAM", "KM"},
{"BDT", "৳"},
{"BGN", "лв."},
{"BHD", "د.ب. "},
{"BND", "$"},
{"BOB", "$b"},
{"BRL", "R$"},
{"BYR", "р."},
{"BZD", "BZ$"},
{"CAD", "$"},
{"CHF", "fr."},
{"CLP", "$"},
{"CNY", "¥"},
{"COP", "$"},
{"CRC", "₡"},
{"CSD", "Din."},
{"CZK", "Kč"},
{"DKK", "kr."},
{"DOP", "RD$"},
{"DZD", "DZD"},
{"EEK", "kr"},
{"EGP", "ج.م. "},
{"ETB", "ETB"},
{"EUR", "€"},
{"GBP", "£"},
{"GEL", "Lari"},
{"GTQ", "Q"},
{"HKD", "HK$"},
{"HNL", "L."},
{"HRK", "kn"},
{"HUF", "Ft"},
{"IDR", "Rp"},
{"ILS", "₪"},
{"INR", "रु"},
{"IQD", "د.ع. "},
{"IRR", "ريال "},
{"ISK", "kr."},
{"JMD", "J$"},
{"JOD", "د.ا. "},
{"JPY", "¥"},
{"KES", "S"},
{"KGS", "сом"},
{"KHR", "៛"},
{"KRW", "₩"},
{"KWD", "د.ك. "},
{"KZT", "Т"},
{"LAK", "₭"},
{"LBP", "ل.ل. "},
{"LKR", "රු."},
{"LTL", "Lt"},
{"LVL", "Ls"},
{"LYD", "د.ل. "},
{"MAD", "د.م. "},
{"MKD", "ден."},
{"MNT", "₮"},
{"MOP", "MOP"},
{"MVR", "ރ."},
{"MXN", "$"},
{"MYR", "RM"},
{"NIO", "N"},
{"NOK", "kr"},
{"NPR", "रु"},
{"NZD", "$"},
{"OMR", "ر.ع. "},
{"PAB", "B/."},
{"PEN", "S/."},
{"PHP", "PhP"},
{"PKR", "Rs"},
{"PLN", "zł"},
{"PYG", "Gs"},
{"QAR", "ر.ق. "},
{"RON", "lei"},
{"RSD", "Din."},
{"RUB", "р."},
{"RWF", "RWF"},
{"SAR", "ر.س. "},
{"SEK", "kr"},
{"SGD", "$"},
{"SYP", "ل.س. "},
{"THB", "฿"},
{"TJS", "т.р."},
{"TMT", "m."},
{"TND", "د.ت. "},
{"TRY", "TL"},
{"TTD", "TT$"},
{"TWD", "NT$"},
{"UAH", "₴"},
{"USD", "$"},
{"UYU", "$U"},
{"UZS", "so'm"},
{"VEF", "Bs. F."},
{"VND", "₫"},
{"XOF", "XOF"},
{"YER", "ر.ي. "},
{"ZAR", "R"},
{"ZWL", "Z$"} };
}
इस उत्तर @ खर्चा करने के कोड डालता है, एक छोटी सी ट्वीक साथ, एक उपयोगिता वर्ग उनके इस समय-घूम प्रतीकों को तीन अक्षर वाले ISO मुद्रा कोड में परिवर्तित करने का प्रयास करता है कि में। दक्षता के लिए, यह वर्ग @ पिछले सभी अनुरोधों के आंतरिक कैश का उपयोग करता है, जिसे @spender द्वारा भी सुझाया गया है।
public static class CurrencySymbolMapper {
/// <summary>An internal cache of previously looked up currencies.</summary>
private static Dictionary<string, string> _currencySymbolsCache =
new Dictionary<string, string> (StringComparer.CurrentCultureIgnoreCase);
public static string TryGetCurrencySymbol(string threeLetterISOAlphabeticCode) {
// TODO: Enhance to get rid of the silent exception that gets thrown when constructing a new RegionInfo(CultureInfo.LCID) temporary object
if (threeLetterISOAlphabeticCode.Length != 3) return string.Empty;
if (_currencySymbolsCache.ContainsKey(threeLetterISOAlphabeticCode))
return _currencySymbolsCache[threeLetterISOAlphabeticCode];
string currencySymbolSearchResult = string.Empty;
try {
currencySymbolSearchResult =
CultureInfo.GetCultures(CultureTypes.AllCultures)
.Where(c => !c.IsNeutralCulture)
.Select(culture => {
try { return new RegionInfo(culture.LCID); }
catch { return null; } // Ignore this error, but enhance future implementation to get ride of this silent exception
})
.Where(ri => ri != null && string.Equals(ri.ISOCurrencySymbol, threeLetterISOAlphabeticCode, StringComparison.OrdinalIgnoreCase))
.Select(ri => ri.CurrencySymbol)
.FirstOrDefault();
}
catch (Exception e) {
// TODO: Handle error
}
if (currencySymbolSearchResult == null) currencySymbolSearchResult = string.Empty;
// Saves both valid and invalid search results, just in case users hammer this method with
// the same invalid request many times
_currencySymbolsCache.Add(threeLetterISOAlphabeticCode, currencySymbolSearchResult);
return currencySymbolSearchResult;
}
}
public static string GetCurrencySymbol(string code)
{
System.Globalization.RegionInfo regionInfo = (from culture in System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.InstalledWin32Cultures)
where culture.Name.Length > 0 && !culture.IsNeutralCulture
let region = new System.Globalization.RegionInfo(culture.LCID)
where String.Equals(region.ISOCurrencySymbol, code, StringComparison.InvariantCultureIgnoreCase)
select region).First();
return regionInfo.CurrencySymbol;
}
मैं एक छोटी स्ट्रिंग विस्तार विधि बनाया
public static string ToCurrencySymbol(this string ISOCurrency)
{
RegionInfo region = CultureInfo.GetCultures(CultureTypes.SpecificCultures).Select(x => new RegionInfo(x.LCID)).FirstOrDefault(p => p.ISOCurrencySymbol == ISOCurrency);
return region?.ISOCurrencySymbol ?? ISOCurrency;
}
आप हमेशा अपनी खुद की विधि –
लिख सकते हैं लेकिन फिर मैं सभी मुद्राओं के लिए एक मानचित्रण बनाने की जरूरत दुनिया। –
'RegionInfo' का उपयोग करके आप आईएसओ 2 वर्ण कोड का उपयोग कर सकते हैं। – Oded