删除非字母数字字符,但保留C#字符串中的小数
我需要将其转换为: 7.5公斤(估计)。2.4公斤(总重量?%/=“度”)#@--__ 为此: 7.5kg估计总重量为2.4千克 注意事项:删除非字母数字字符,但保留C#字符串中的小数,c#,regex,char,C#,Regex,Char,我需要将其转换为: 7.5公斤(估计)。2.4公斤(总重量?%/=“度”)#@--__ 为此: 7.5kg估计总重量为2.4千克 注意事项: 删除非字母数字,但保留数字 数字可以有点或逗号表示法 数字可以是整数或小数 编辑 我想知道我需要对这个正则表达式求反“\d+[\.\,]?\d*(匹配整数和小数),然后删除结果中的非字母数字。不确定这在单个正则表达式中是否可行 正则表达式就可以了。 C#代码和字符混在一起也可以 编辑2 我根据Keith的回答做了一些研究,以便更好地理解它: 您可以执行
- 删除非字母数字,但保留数字
- 数字可以有点或逗号表示法
- 数字可以是整数或小数
C#代码和字符混在一起也可以 编辑2 我根据Keith的回答做了一些研究,以便更好地理解它:
您可以执行以下操作:-
public static string Filter(string s)
{
var regex = new Regex(@"(\d\.\d|\d,\d|[0-9a-zA-Z]|\s)+");
var matches = regex.Matches(s);
var sb = new StringBuilder();
foreach (var match in matches) sb.Append(match);
return sb.ToString();
}
static void Main(string[] args)
{
Console.WriteLine(Filter("7.5kg (estimate). 2,4 kilos (total?%/=\"º).,¿#@--__"));
}
好吧,试一下,如果你有什么问题,回来问一个具体的问题好吧,我一直在努力,但没有成功。这就是我在这里问的原因。我需要一种“匹配所有匹配项,但不匹配
@”\d+[\.\,]?\d*“
)”替代方案,具有负前瞻性,但可能无法处理所有边缘情况