1

これは非常に単純な質問かもしれません。テキスト ボックスに値 10,000.12 が表示され、ユーザーが誤ってデータを編集したときに、000.12 のような最初の 2 つの数字を削除し、計算でこのテキスト ボックスを使用すると、例外が発生するとします。テキストボックスを検証するだけです。

例: string str = ",100.12;" 10 進数に変換 = 100.12;

何か案が?。

ユーザーが桁区切り記号を削除すると、整数のみが表示されます。

4

4 に答える 4

1

質問を理解した場合は、解析ルーチンが失敗するのを防ぐすべての文字を削除する必要があります。

string str = ",0,100.12";

var modified = new StringBuilder();
foreach (char c in str)
{
    if (Char.IsDigit(c) || c == '.')
        modified.Append(c);
}

decimal number= decimal.Parse(modified.ToString());
于 2012-12-12T07:03:06.833 に答える
1

これはかなりめちゃくちゃで、すべての文字列が同じように見えるかどうかはわかりませんが、もしそうなら、これでうまくいくかもしれません:

string str = ",0,100.12";
decimal number;
bool converted = decimal.TryParse(str.Substring(str.LastIndexOf(",") + 1), out number);

変数convertedは、文字列が変換されたかどうかを示し、例外ではありません。

幸運を!

于 2012-12-12T06:55:39.907 に答える
0
string a = "100.12";
decimal b = Convert.ToDecimal(a);
于 2012-12-12T07:08:09.277 に答える
0
string str = ",0,100.12;";
var newstr = Regex.Replace(str,@"[^\d\.]+","");
decimal d = decimal.Parse(newstr, CultureInfo.InvariantCulture);
于 2012-12-12T07:24:05.927 に答える