首页 > 解决方案 > c# 将带逗号的字符串转换为数字

问题描述

所以我有这个输入:3,000,000

这个函数返回30000M

public static decimal? CustomParse(string incomingValue)
{
    decimal val;
    if (!decimal.TryParse(incomingValue.Replace(",", "").Replace(".", ""), NumberStyles.Number, CultureInfo.InvariantCulture, out val))
        return null;
    return val / 100;
}

将这种输入转换为的最佳方法是什么numbber

编辑

我也试试这个::

Regex regex = new Regex(@"\d+");

输出是3

标签: c#stringdouble

解决方案


你也可以这样做

return Decimal.Parse(incomingValue, new CultureInfo("en-US"));

在 en-US '.' 是逗号分隔符。所以它会正确解析文本。

如果文化设置为“de-DE”3 将是转换的预期结果为“,”是逗号分隔符。

但是,您的正则表达式总是会给您 3,因为它只匹配[0-9]+正则表达式,而不关心您的文化设置。如果你想要一个正则表达式来匹配你的号码,你必须使用类似的东西

Regex regex = new Regex(@"\d+(,\d+)*");

这将匹配“123”和“123,123”,但不匹配“123”或“123”。(在女巫的情况下,它只会匹配 123 部分)。


推荐阅读