用千位分隔符将字符串值转换为十进制?

时间:2012-12-12 06:44:58

标签: c#

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

例如: string str =“,100.12;” 转换成     十进制数= 100.12;

任何想法?。

当用户删除任何千位分隔符时,它仅显示整数。

4 个答案:

答案 0 :(得分:1)

这很混乱了,我不确定你们所有的字符串看起来是否一样,但是如果他们这样做可能会有这个诀窍:

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

变量converted将告诉您字符串是否已转换,并且您不会例外。

祝你好运!

答案 1 :(得分: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());

答案 2 :(得分:0)

string a = "100.12";
decimal b = Convert.ToDecimal(a);

答案 3 :(得分:0)

string str = ",0,100.12;";
var newstr = Regex.Replace(str,@"[^\d\.]+","");
decimal d = decimal.Parse(newstr, CultureInfo.InvariantCulture);