使用正则表达式的多个小数的通用提取
本文关键字:提取 小数 正则表达式 | 更新日期: 2023-09-27 18:26:23
嗨,如何从字符串中提取具有不同小数位数的多个小数?我正在寻找一种从以下字符串中提取3个数字的通用方法。
例如
CC77X1722X12 => 77,1722,12
PC77.5X10102X12.5 => 77.5, 10102, 12.5
XP60.25X0.333X12 => 60.25, 0.333, 12
这三个数字总是用"X"分隔,字符串总是以2个字符开头
谢谢!
由于您有这样一个特定的模式,您甚至不需要使用正则表达式。因为前两个字符可以忽略,并且所有数字都用"X"字符分隔,所以这个C#代码应该可以完成任务(当然,添加了适当的错误处理)
public IEnumerable<decimal> ExtractNumbers(string s)
{ // For s = "CC77X1722X12"
string[] nums = s.Substring(2).Split('X'); // nums = ["77", "1722", "12"];
return nums.Select(num => decimal.Parse(num)); // returns [77, 1722, 12]
}
不过,对于生产代码,我建议使用十进制。decimal.Parse
上的TryParse。要使用这种方法,你可以写一些类似的东西
public IEnumerable<decimal> ExtractNumbers(string s)
{
string[] nums = s.Substring(2).Split('X');
return nums
.Select(num => {
decimal d;
if (decimal.Parse(num, out d))
return new {Number = d, Succeeded = true};
return new {Number = 0, Succeeded = false};
})
.Filter(result => result.Succeeded)
.Select(result => result.Number);
}