gpt4 book ai didi

c# - 正则表达式过滤非数字字符

转载 作者:行者123 更新时间:2023-12-01 16:28:46 29 4
gpt4 key购买 nike

我有一个Regex来在解析十进制数之前删除非数字字符。

我使用以下代码

Regex.Replace(myStr, "[^0-9.]", "");

现在这适用于十进制数字,但它删除了“符号”字符,即“A16.1”和“A-16.1”的输出都返回“16.1”...

使用以下编辑版本似乎可行

Regex.Replace(myStr, "[^-0-9.]", "");

但是不熟悉正则表达式,有经验的用户能否确认这是正确的表达式......?

最佳答案

我建议

 -?[0-9]+(\.[0-9]+)?

模式,即删除小数将是

 string result = Regex.Replace(myStr, @"-?[0-9]+(\.[0-9]+)?", "");

说明:

 -?           one or zero minus sign "-" - sign
[0-9]+ at least one digit
(\.[0-9]+)? followed by one or none
fractional part (decimal separator and at least one digit)

如果您想要获取(而不是删除)号码,请使用匹配:

 string myStr = "-1,2.3.de2.43.";

string[] numbers = Regex
.Matches(myStr, @"-?[0-9]+(\.[0-9]+)?")
.OfType<Match>()
.Select(match => match.Value)
.ToArray();

// Test
Console.Write(string.Join(Environment.NewLine, numbers));

结果是

 -1
2.3
2.43

关于c# - 正则表达式过滤非数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41224129/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com