正则表达式替换无效字符
我没有太多使用RegEx的经验,所以我使用许多链式String.Replace()调用来删除不需要的字符 – 我可以写一个RegEx来简化这个吗?
string messyText = GetText(); string cleanText = messyText.Trim() .ToUpper() .Replace(",", "") .Replace(":", "") .Replace(".", "") .Replace(";", "") .Replace("/", "") .Replace("\\", "") .Replace("\n", "") .Replace("\t", "") .Replace("\r", "") .Replace(Environment.NewLine, "") .Replace(" ", "");
谢谢
试试这个正则表达式:
Regex regex = new Regex(@"[\s,:.;/\\]+"); string cleanText = regex.Replace(messyText, "").ToUpper();
\s
是一个等同于[ \t\r\n]
的字符类。
如果您只想保留字母数字字符,而不是将现有的每个非字母数字字符添加到字符类中,您可以这样做:
Regex regex = new Regex(@"[\W_]+"); string cleanText = regex.Replace(messyText, "").ToUpper();
其中\W
是任何非单词字符(不是[^a-zA-Z0-9_]
)。
拯救人物类 !
string messyText = GetText(); string cleanText = Regex.Replace(messyText.Trim().ToUpper(), @"[,:.;/\\\n\t\r ]+", "")
你可能想要使用白名单方法,有一个有趣的角色海洋,其效果取决于组合可能不容易想象。
除了允许的字符之外,删除所有内容的简单正则表达式可能如下所示:
messyText = Regex.Replace(messyText, @"[^a-zA-Z0-9\x7C\x2C\x2E_]", "");
除了这个正则表达式允许的字母数字字符外,^用于反转选择 ,。 和_您可以根据需要添加和删除字符和字符集。