これは非常に単純な質問かもしれません。テキスト ボックスに値 10,000.12 が表示され、ユーザーが誤ってデータを編集したときに、000.12 のような最初の 2 つの数字を削除し、計算でこのテキスト ボックスを使用すると、例外が発生するとします。テキストボックスを検証するだけです。
例: string str = ",100.12;" 10 進数に変換 = 100.12;
何か案が?。
ユーザーが桁区切り記号を削除すると、整数のみが表示されます。
これは非常に単純な質問かもしれません。テキスト ボックスに値 10,000.12 が表示され、ユーザーが誤ってデータを編集したときに、000.12 のような最初の 2 つの数字を削除し、計算でこのテキスト ボックスを使用すると、例外が発生するとします。テキストボックスを検証するだけです。
例: string str = ",100.12;" 10 進数に変換 = 100.12;
何か案が?。
ユーザーが桁区切り記号を削除すると、整数のみが表示されます。
質問を理解した場合は、解析ルーチンが失敗するのを防ぐすべての文字を削除する必要があります。
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());
これはかなりめちゃくちゃで、すべての文字列が同じように見えるかどうかはわかりませんが、もしそうなら、これでうまくいくかもしれません:
string str = ",0,100.12";
decimal number;
bool converted = decimal.TryParse(str.Substring(str.LastIndexOf(",") + 1), out number);
変数converted
は、文字列が変換されたかどうかを示し、例外ではありません。
幸運を!
string a = "100.12";
decimal b = Convert.ToDecimal(a);
string str = ",0,100.12;";
var newstr = Regex.Replace(str,@"[^\d\.]+","");
decimal d = decimal.Parse(newstr, CultureInfo.InvariantCulture);