Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用正则表达式从字符串生成负十进制数?_C#_Regex - Fatal编程技术网

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-9]*
    -0+位
  • \?
    -可选的
  • [0-9]+
    -1个或多个数字
    regex.Split
    中的当前正则表达式对
    “100.00”
    没有任何作用,但会从
    “-1.2”
    中删除
    -
    。拆分的目的是什么?对不起,我将在我的问题中详细说明。。。。目前删除“-”是一个问题。谢谢你的帮助,我会使用
    var match=Regex.match(s,@“[-+]”?[0-9]*\.?[0-9]+”
    然后检查
    是否(match.Success)
    如果是,解析
    match.Value
    。请尝试一下,谢谢。请参阅精彩。。。谢谢我拿出了
    +
    ,我想你不需要它了。看见