仅用1个空格替换非字母数字字符和多个空格

AAA*_*ddd 2 c# regex

我试图用一个单独的空间替换所有"非字母数字字符"和"多个空格"

我有2个工作解决方案,但我想知道它是否有可能有效地结合它们?

特定

var str = "ASD S-DF 2134 4@# 4    234234 #$)(u SD";
var options = RegexOptions.None;
Run Code Online (Sandbox Code Playgroud)

非字母数字字符的解决方案

var rgxAlpha = new Regex("[^a-zA-Z0-9]");
str = rgxAlpha.Replace(str, " ", options);
Run Code Online (Sandbox Code Playgroud)

多个空间的解决方案

var regexSpace = new Regex(@"[ ]{2,}", options);
str = regexSpace.Replace(str, " ");
Run Code Online (Sandbox Code Playgroud)

预期结果

ASD S DF 2134 4 4 234234 u SD
Run Code Online (Sandbox Code Playgroud)

Avi*_*Raj 5

只是下面就足够了,因为[^a-zA-Z0-9]+匹配也是空格,你不需要[ ]{2,}明确添加.

string result = Regex.Replace(str, @"[^a-zA-Z0-9]+", " ");
Run Code Online (Sandbox Code Playgroud)

DEMO