我试图替换所有"非字母数字字符"和#34;多个空格"只有一个单一的空间
我有2个工作解决方案,但是我想知道是否可以有效地将它们组合起来?
鉴于
var str = "ASD S-DF 2134 4@# 4 234234 #$)(u SD";
var options = RegexOptions.None;
解决非字母数字字符
var rgxAlpha = new Regex("[^a-zA-Z0-9]");
str = rgxAlpha.Replace(str, " ", options);
解决多个空格
var regexSpace = new Regex(@"[ ]{2,}", options);
str = regexSpace.Replace(str, " ");
预期结果
ASD S DF 2134 4 4 234234 u SD
答案 0 :(得分:5)
只需以下即可,因为[^a-zA-Z0-9]+
也与空格匹配,您无需明确添加[ ]{2,}
。
string result = Regex.Replace(str, @"[^a-zA-Z0-9]+", " ");
答案 1 :(得分:2)
假设它们都有效:
var rgxPattern = new Regex(@"[^a-zA-Z0-9]+|[ ]{2,}");
只需添加|他们之间。
答案 2 :(得分:0)
string szOut= "";
char previous;
foreach (char cr in str.ToCharArray())
{
if(cr == ' '&& previous == ' ')
continue;
if (IsAlphaNumeric(cr))
szOut+= cr;
previous = cr;
}
return szOut;
...
public static Boolean IsAlphaNumeric(char cr)
{
return char.IsLetter(cr) || char.IsNumber(cr) || cr == ' ';
}