我没有太多使用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(" ", "");
Run Code Online (Sandbox Code Playgroud)
谢谢
999*_*999 14
试试这个正则表达式:
Regex regex = new Regex(@"[\s,:.;/\\]+");
string cleanText = regex.Replace(messyText, "").ToUpper();
Run Code Online (Sandbox Code Playgroud)
\s
是一个等同于的字符类[ \t\r\n]
.
如果您只想保留字母数字字符,而不是将现有的每个非字母数字字符添加到字符类中,您可以这样做:
Regex regex = new Regex(@"[\W_]+");
string cleanText = regex.Replace(messyText, "").ToUpper();
Run Code Online (Sandbox Code Playgroud)
哪个\W
是非单词字符(不是[^a-zA-Z0-9_]
).