设想情况:
步骤1:获取十进制值
步骤2:使用区域性信息显示正确的货币
步骤3:结果:
“100.0000美元”
"£24.0340“
“11 0400欧元”
步骤4:对£和$ where符号在数字之前使用修饰符:
input = input.TrimEnd("0".ToCharArray());
input = input.TrimEnd(".".ToCharArray());输出:
“100美元”
"£24.034“
“11 0400欧元”
如果零或点在结尾,它是简单的,但当其他字符在欧洲文化的情况下,它就会中断。
在不对字符串操作执行复杂工作的情况下,从不同的字符串中删除尾随零的最佳方法是什么?我这样做是正确的吗?
发布于 2014-07-19 17:04:32
使用CurrencySymbol获取当前货币:
Char currentCurrency = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol.ToCharArray()[0];
// Get your Double number,
Double result = null;
try {
Regex regexObj = new Regex(@"[^\d]");
result = Convert.ToDouble(regexObj.Replace(input, ""));
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
Switch(currentCurrency){
// Append or prepend your currency symbol to your input
}如果需要更改线程货币,请使用此代码获取当前线程货币符号:
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol发布于 2014-07-19 19:00:52
问题是您不能使用NumberFormatInfo类获得适当的区域性对象,同时也不能使用跟踪零点.所以,如果您想要实现我需要的东西,就必须对字符串进行一些操作。
我想要的输出:
“10.2美元”
"£50.465"
"23,54欧元“
按照本国货币减记的标准。
我解决了复杂的字符串操作(也就是一些关于字符串的工作).
public static string LocalizeJackpots(this HtmlHelper html, decimal amount, byte currencyType)
{
var httpContext = new HttpContextWrapper(HttpContext.Current);
string countryCulture = httpContext.Request.Cookies["countryCulture"].Value;
var culture = GetCultureByCurrencyType(currencyType, countryCulture);
return ManipulateCurrencyString(amount.ToString("c", culture));
}然后:
/// <summary>
/// This is used to properly trail leading zeros with usage of NumberFormatInfo culture class later in string
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
private static string ManipulateCurrencyString(string input)
{
char lastCharacter = input.Substring(input.Length - 1, 1)[0];
if (Char.IsNumber(lastCharacter))
{
// for currencies with symbol in front
input = input.TrimEnd("0".ToCharArray()).TrimEnd(".".ToCharArray());
}
else
{
// for currencies with symbol in the end
string symbol = input.Substring(input.Length - 1, 1);
string number = input.Substring(0, input.Length - 2).TrimEnd("0".ToCharArray()).TrimEnd(".".ToCharArray()).TrimEnd(",".ToCharArray());
input = number + " " + symbol;
}
return input;
}https://stackoverflow.com/questions/24842456
复制相似问题