3

通貨フォーマットデータにどの通貨記号が存在するかを調べたい。

たとえば、入力文字列= $ 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に変換する方法を知っています。文字列から通貨記号を抽出する方法がわかりません。

4

3 に答える 3

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();
    }
}

出力

文字列に「$」が含まれています

于 2012-07-12T22:27:49.950 に答える
-1

試してみませんか?

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

curSymbol を取得します。:) 必ず通貨の値を記号で渡してください:)

于 2012-07-12T22:29:37.450 に答える