首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何正确移除不同区域性中的显示货币并移除尾随零?

如何正确移除不同区域性中的显示货币并移除尾随零?
EN

Stack Overflow用户
提问于 2014-07-19 16:24:05
回答 2查看 240关注 0票数 1

设想情况:

步骤1:获取十进制值

步骤2:使用区域性信息显示正确的货币

步骤3:结果:

“100.0000美元”

"£24.0340“

“11 0400欧元”

步骤4:对£和$ where符号在数字之前使用修饰符:

代码语言:javascript
运行
复制
    input = input.TrimEnd("0".ToCharArray());
    input = input.TrimEnd(".".ToCharArray());

输出:

“100美元”

"£24.034“

“11 0400欧元”

如果零或点在结尾,它是简单的,但当其他字符在欧洲文化的情况下,它就会中断。

在不对字符串操作执行复杂工作的情况下,从不同的字符串中删除尾随零的最佳方法是什么?我这样做是正确的吗?

EN

回答 2

Stack Overflow用户

发布于 2014-07-19 17:04:32

使用CurrencySymbol获取当前货币:

代码语言:javascript
运行
复制
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
}

如果需要更改线程货币,请使用此代码获取当前线程货币符号:

代码语言:javascript
运行
复制
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol

资料来源:Link 1Link 2

票数 0
EN

Stack Overflow用户

发布于 2014-07-19 19:00:52

问题是您不能使用NumberFormatInfo类获得适当的区域性对象,同时也不能使用跟踪零点.所以,如果您想要实现我需要的东西,就必须对字符串进行一些操作。

我想要的输出:

“10.2美元”

"£50.465"

"23,54欧元“

按照本国货币减记的标准。

我解决了复杂的字符串操作(也就是一些关于字符串的工作).

代码语言:javascript
运行
复制
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));
}

然后:

代码语言:javascript
运行
复制
/// <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;
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24842456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档