【发布时间】:2023-04-09 18:34:02
【问题描述】:
我有这样的问题: string filter: detect non-ASCII signs in C# 但我应该排除字符串中所有不可打印的字符除了换行字符(\n)。
从正则表达式选项开始:
foo = System.Text.RegularExpressions.Regex.Replace(foo, @"[^\u0020-\u007E]+", string.Empty);
我是这样修改的:
foo = System.Text.RegularExpressions.Regex.Replace(foo, @"[\u0000-\u0009\u000B-\u000C\u000E-\u0019\u007F]+", string.Empty);
这似乎工作正常,但你能建议一个不那么冗长的解决方案吗? 提前致谢
【问题讨论】:
-
如果你不擅长正则表达式,请尝试不使用它
-
您的意思是“除了换行符 (\n) 和回车符 (\r) 之外”?
-
正确。我应该保留回车和换行。
-
你不是没有过滤掉一些不可打印的字符,即0x1a到0x1f包括在内吗?
-
试试
[\p{Cc}-[\r\n]]+