我想剥离string
只有数值和一个小数点....
我的正则表达式出了什么问题?
string test = "1e2e3.e4";
var s = Regex.Replace(test, "^\\d*\\.\\d*$", "");
答案 0 :(得分:1)
你正在做的是删除一个十进制数字,试试这个:
Regex.Replace(test, "[^\\d.]", "");
如果您只想保留一个点,首先需要确定哪个点要保留,如果有多个点。
更新:假设您要保留第一个或最后一个点,请使用String.IndexOf
或String.LastIndexOf
拆分字符串并使用:
Regex.Replace(test, "\\D", "");
在每个结果字符串上。这可能比不使用正则表达式更慢,就像在Matt Hamilton回答艰难时那样。
答案 1 :(得分:1)
正则表达式对您的需求可能过度。
string test = "1e2e3.e4.56543fds.4";
var foundPeriod = false;
var chars = test.Where(c => Char.IsDigit(c)
|| (c == '.' && !foundPeriod && (foundPeriod = true))).ToArray();
Console.WriteLine(new String(chars));
答案 2 :(得分:0)
string test = "1e2e3.e4";
var s = Regex.Replace(test, @"[^\d\.]", "");