在货币数据C#中查找货币符号

时间:2012-07-12 22:16:35

标签: c#

我想在货币格式数据中找到哪个货币符号。

例如,输入字符串= $ 56.23

public class FormatConverter 
{
    private CultureInfo _cultureInfo;

    public void UpdateCultureInfo()
    {
        Thread.CurrentThread.CurrentCulture.ClearCachedData();
        var thread = new Thread(
            s => _cultureInfo = Thread.CurrentThread.CurrentCulture);

        thread.Start();
        thread.Join();
    }

    Bool TryParseCurrencySymbolAndValue(string input, out string CurrencySymbol,
                                        out double value)
    {
        if(_cultureInfo == null)
            UpdateCultureInfo();
        try{

        // Convert Currency data into double
        value = Double.Parse(input, NumberStyles.Number | NumberStyles.AllowCurrencySymbol);
        // How to extract Currency Symbol?
            CurrencySymbol = "$";
            return true;
        }
        catch(Exception ex){ /* Exception Handling */}
        return false;
    }
}

我想从字符串和56.23中分别提取“$”符号然后我想将CultureInfo应用到56.23到法语格式。输出应为56,23美元。

在某些情况下,输入可能是“欧元符号”或输入字符串开头或结尾的其他货币符号。

我知道如何转换为CurrentCulture for Numeric部分。我不知道如何从字符串中提取货币符号。

3 个答案:

答案 0 :(得分:5)

听起来你已经知道如何将字符串解析为数字类型(如果我错了,请纠正我)。您在示例中使用的是double,我建议decimal,但这是您的选择。

要获取货币符号,您可以使用简单的正则表达式

Regex ex = new Regex(@"\p{Sc}");
CurrencySymbol = ex.Match(input).Value;

我希望有所帮助。

答案 1 :(得分:1)

请查看此链接,以便了解您可以找到和/或使用IndexOf的许多不同方法 [IndexOf String Examples] [1]

问题是格式是否总是将$作为第一个字符..?如果答案是肯定的 无论USC或外币使用String.IndexOf方法

String.IndexOf("$")

这是一个您可以查看的编码示例

using System;

class Program
{
    static void Main()
    {
    // A.
    // The input string.
    const string s = "Tom Cruise is an Idiot he should pay $54.95.";

    // B.
    // Test with IndexOf.
    if (s.IndexOf("$") != -1)
    {
        Console.Write("string contains '$'");
    }
    Console.ReadLine();
    }
}

输出

字符串包含'$'

答案 2 :(得分:-1)

你可以试试吗?

float curSymbol;
bool isValid = float.TryParse(curValue, 
    NumberStyles.Currency,
    CultureInfo.GetCultureInfo("en-US"), out curSymbol);

获取curSymbol。 :)务必使用符号:)

传递货币值