1

这可能是一个非常简单的问题。假设文本框显示值 10,000.12,当用户错误地编辑数据时,他删除了前两个数字,如 ,000.12 并在计算中使用此文本框,然后它给出了异常。我想要一个刚刚验证的文本框。

例如:字符串 str = ",100.12;" 转换为十进制数 = 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 回答