0

私はC#で非常に良い通貨クラスを使用しています。クラスは正常に機能していますが、USDをIDR(ルピアインドネシア語)に変換する必要がある場合、このエラーが発生します

 "{lhs: \"1,0 U.S. dollar\",rhs: \"9 708,73786 Indonesian rupiahs\",error: \"\",icc: true}"

問題は9708,73786のスペースから発生します。スペースをなくす必要があると思います。これはクラスに関するコードです:

   public static class CurrencyConverter
{
    public static string Convert(decimal amount, string from, string to)
    {
        WebClient web = new WebClient();

        string url = string.Format("http://www.google.com/ig/calculator?hl=en&q={0}{1}=?{2}", amount, from.ToUpper(), to.ToUpper());

        string response = web.DownloadString(url);

        Regex regex = new Regex("rhs: \\\"(\\d*(.|,)\\d*)");
        Match match = regex.Match(response);

        return System.Convert.ToDecimal(match.Groups[1].Value).ToString();
    }
}

}

おそらく正規表現を変更する必要がありますが、どのような変更があるのか​​わかりません。

new Regex("rhs: \\\"(\\d*(.|,)\\d*)")

これは、Visual Studio 2010(Windowsフォーム)のスクリーンショットです。

ここに画像の説明を入力してください

4

2 に答える 2

1

私はこれを行うことをお勧めします:

Regex regex = new Regex(@"(?<=rhs: \"")(\d[\s,]?)+");
Match match = regex.Match(response);
string value = Regex.Replace(match.ToString(), @"\s", "");
return System.Convert.ToDecimal(value).ToString();

ここで試してみてください:http://ideone.com/ySISDU

于 2013-01-16T12:54:24.383 に答える
0

グローバルに置き換えてみてください:

`\s(?=[0-9])`

空の文字列に対して、入力を処理します。

\d( .NET言語では任意のUnicode数字と一致するため、[0-9]代わりにを使用することに注意してください)

于 2013-01-16T12:48:02.867 に答える