我很感激你对此的帮助,因为我不知道要使用哪个字符范围,或者是否有像[[:cntrl:]]这样的字符类我在ruby中找到了?
通过不可打印的方式,我的意思是当打印输入字符串时,删除输出中未显示的所有字符。请注意,我寻找一个c#正则表达式,我的代码没有问题
答案 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);