我有一个字符串喜欢5.5kg
或7.90gram
我想得到5.5
或7.90
作为十进制值.如何在C#中获得这样的结果,还有一件事我的字符串将始终以十进制开头.
这是我的代码,只要遇到除小数之外的任何内容,就会抛出错误.
string weight = attributeValue;
if (!string.IsNullOrEmpty(weight))
{
product.Weight = Convert.ToDecimal(attributeValue);
}
else
{
product.Weight = 0.00m;
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 28
我会创建一个与前导数字部分匹配的正则表达式.这在一定程度上取决于你是否总是有一个小数点,是否要允许数千个分隔符的逗号,它是否总是.
用作小数点等等.它可能看起来像这样:
^-?\d+(?:\.\d+)?
Run Code Online (Sandbox Code Playgroud)
然后将该正则表达式与您的文本匹配,获取匹配的值(如果成功)并使用decimal.Parse
或者double.Parse
该值:
Regex regex = new Regex(@"^-?\d+(?:\.\d+)?");
Match match = regex.Match(text);
if (match.Success)
{
weight = decimal.Parse(match.Value, CultureInfo.InvariantCulture);
}
Run Code Online (Sandbox Code Playgroud)
请注意,对于诸如质量之类的"自然"值,您可能会double
比使用更好decimal
.后者更适合于诸如货币之类的"人为"值,这些值自然最好用十进制表示并具有精确值.这取决于你在做什么.
归档时间: |
|
查看次数: |
13626 次 |
最近记录: |