gpt4 book ai didi

c# - 从字符串中检索货币符号

转载 作者:行者123 更新时间:2023-11-30 21:27:40 31 4
gpt4 key购买 nike

我正在尝试从下拉列表中检索元素并将其存储在 string 中。我想将该字符串 货币符号 转换为货币代码。以下是我写的代码:

我写了下面的代码,但我收到一条错误消息:

System.Globalization.CultureNotFoundException: Culture is not supported. Parameter name: name USD - United States dollar is an invalid culture identifier.

public string RetreiveCurrencySymbolFromCode()
{
string currencycode = " USD-United States Dollars";
string FinalCode = Currencycode1.Split('-')[0];
CultureInfo Symbol = new CultureInfo(FinalCode);
return Symbol.NumberFormat.CurrencySymbol;
}

我希望检索 USD 并将其更改为符号 $

最佳答案

嗯,"USD"货币 的名称(RegionInfo.ISOCurrencySymbol),当"en-US"文化 (Culture.Name) 的(预期)名称。让我们获取使用 USD 作为货币的所有文化:

  string FinalCode = "USD";

var result = CultureInfo
.GetCultures(CultureTypes.SpecificCultures)
.Where(culture => new RegionInfo(culture.LCID).ISOCurrencySymbol == FinalCode)
.ToArray();

Console.Write(string.Join(Environment.NewLine, result
.Select(culture => $"{culture.Name,10} : ({culture.NumberFormat.CurrencySymbol}) : {culture.EnglishName}")));

结果:

 en-US : ($) : English (United States)
quz-EC : ($) : Quechua (Ecuador)
en-029 : ($) : English (Caribbean)
es-EC : ($) : Spanish (Ecuador)
es-SV : ($) : Spanish (El Salvador)
es-PR : ($) : Spanish (Puerto Rico)
es-US : ($) : Spanish (United States)

如您所见,几种不同的文化可以使用相同的货币。从技术上讲,您的代码可以实现为

 using System.Text.RegularExpressions;

...

string currencycode = " USD-United States Dollars";

...

// https://en.wikipedia.org/wiki/ISO_4217
// ISO_4217 - all codes are 3 capital letters
string FinalCode = Regex.Match(currencycode, "[A-Z]{3}").Value;

var culture = CultureInfo
.GetCultures(CultureTypes.SpecificCultures)
.Where(culture => new RegionInfo(culture.LCID).ISOCurrencySymbol == FinalCode)
.FirstOrDefault();

if (culture != null)
return culture.NumberFormat.CurrencySymbol;
else
return "???"; // Unknown currency / culture

这里有2问题:

  1. 货币代码 ISO 4217三个大写字母组合(例如USDEURRUB),更安全的方法是借助正则表达式匹配
  2. 相同货币可以被几种文化使用。您可能需要一个额外的规则来缩小所需的文化

关于c# - 从字符串中检索货币符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57396652/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com