C# 如何使用正则表达式从字符串生成负十进制数?
我需要从字符串中创建负小数,即: 目前,我有一段代码可以很好地处理正十进制:C# 如何使用正则表达式从字符串生成负十进制数?,c#,regex,C#,Regex,我需要从字符串中创建负小数,即: 目前,我有一段代码可以很好地处理正十进制: var decimalList = Regex.Split("£100.00", @"[^0-9\.]+").Where(c => c != "." && c.Trim() != ""); decimal decimalValue = decimal.Parse(decimalList.First()); 结果是100.00 var decimalList = Regex.Split("X-1
var decimalList = Regex.Split("£100.00", @"[^0-9\.]+").Where(c => c != "." && c.Trim() != "");
decimal decimalValue = decimal.Parse(decimalList.First());
结果是100.00
var decimalList = Regex.Split("X-100.00X", @"[^0-9\.]+").Where(c => c != "." && c.Trim() != "");
decimal decimalValue = decimal.Parse(decimalList.First());
这将导致-100.00,这是本问题的重点
如何更改正则表达式以处理负值,例如:“-1.2”,并在生成的小数中保持负值
谢谢。我认为匹配方法在这里更容易。匹配浮点/类整数值的模式是-?[0-9]*\.?[0-9]+
,使用Regex.match
,可以提取字符串中第一个出现的模式。然后,只需解析找到的值:
var s = "X-100.00X";
var match = Regex.Match(s, @"-?[0-9]*\.?[0-9]+");
if (match.Success) {
decimal decimalValue = decimal.Parse(match.Value);
Console.Write(decimalValue);
}
看
图案细节:
-可选的-?
-
-0+位[0-9]*
-可选的\?
-1个或多个数字李>[0-9]+
中的当前正则表达式对regex.Split
没有任何作用,但会从“100.00”
中删除“-1.2”
。拆分的目的是什么?对不起,我将在我的问题中详细说明。。。。目前删除“-”是一个问题。谢谢你的帮助,我会使用-
然后检查var match=Regex.match(s,@“[-+]”?[0-9]*\.?[0-9]+”
如果是,解析是否(match.Success)
。请尝试一下,谢谢。请参阅精彩。。。谢谢我拿出了match.Value
,我想你不需要它了。看见+