Моя первоначальная мысль заключается в том, что передача символа валюты в такой метод без контекста означает, что он может быть допустимым символом, но необязательно правильно указать один из многих регионов, например, символ «$».
Если бы я делал это в любом случае, я бы, вероятно, обходил конкретные культуры .NET (избегая инвариантной культуры, если вы в Windows 7), проверяя каждое свойство CurrencySymbol RegionInfo на переданную строку. быстрый, грязный (и непроверенный), пока он все еще в моей голове; Я уверен, что это может быть более эффективно закодировано:
public static Boolean IsValidCurrency(this string value)
{
// Assume the worst.
Boolean isValid = false;
foreach (CultureInfo c in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
{
// Account for InvariantCulture weirdness in Windows 7.
if (!c.Equals(CultureInfo.InvariantCulture))
{
RegionInfo r = new RegionInfo(c.LCID);
if (r.CurrencySymbol.Equals(value, StringComparison.OrdinalIgnoreCase))
{
// We've got a match, so flag it and break.
isValid = true;
break;
}
}
}
return isValid;
}
Это предполагает, что вы только переходящую в символе, и не решает вариант использует различные символы. Надеюсь, тебе все равно придется думать.
, что проблема с этим ?? –
Возможно, вам стоит попробовать использовать «CultureInfo.InvariantCulture» вместо передачи определенной «CultureInfo» – V4Vendetta
Pranay Rana. Возможно, я не знаю, в какой валюте я имею дело все время, поэтому я хочу иметь возможность передавать любую форму валюты в метод не только GB £, как показано выше. – burrows