C#正则表达式删除不可打印的字符,并控制字符,在混合了多种不同语言的文本中,使用unicode字母

时间:2016-11-12 15:58:00

标签: c# regex unicode

我很感激你对此的帮助,因为我不知道要使用哪个字符范围,或者是否有像[[:cntrl:]]这样的字符类我在ruby中找到了?

通过不可打印的方式,我的意思是当打印输入字符串时,删除输出中未显示的所有字符。请注意,我寻找一个c#正则表达式,我的代码没有问题

3 个答案:

答案 0 :(得分:27)

您可以使用

删除所有控件和其他不可打印的字符
s = Regex.Replace(s, @"\p{C}+", string.Empty);

\p{C} Unicode类别类匹配所有控制字符,甚至是ASCII表外的控制字符,因为在.NET中,Unicode类别类默认是Unicode感知的。

答案 1 :(得分:2)

您可以尝试:

string s = "Täkörgåsmrgås";
s = Regex.Replace(s, @"[^\u0000-\u007F]+", string.Empty);

<小时/> 评论后更新的答案:

有关不可打印字符的文档: https://en.wikipedia.org/wiki/Control_character

Char.IsControl方法:

https://msdn.microsoft.com/en-us/library/system.char.iscontrol.aspx

也许你可以试试:

string input; // this is your input string
string output = new string(input.Where(c => !char.IsControl(c)).ToArray());

答案 2 :(得分:0)

要删除所有控制字符和其他不可打印的字符

Regex.Replace(s, @"\p{C}+", String.Empty);

仅删除控制字符(如果您不想删除表情符号?)

Regex.Replace(s, @"\p{Cc}+", String.Empty);