删除非字母字符

删除C#中所有非字母字符的最佳方法是什么? 我查了一下正则表达式,但是当我这样做时它似乎没有认出正则表达式:

string cleanString = ""; string dirtyString = "I don't_8 really know what ! 6 non alpha- is?"; cleanString = Regex.Replace(dirtyString, "[^A-Za-z0-9]", ""); 

正则表达式下面有一条红色的摇摆线。 有没有办法可以删除简单的非字母字母,如果可以,有些人可以提供样本吗? 我不确定循环和数组是否可行,以及如何获取所有非字母字符? 我假设我必须做一些事情,如果不等于AZ或0-9,然后用“”删除?

您可以使用LINQ这样做:

 var cleanString = new string(dirtyString.Where(Char.IsLetter).ToArray()); 

您可以在MSDN上查看其他Char检查。

正则表达式下面有一条红色的摇摆线。

然后:

  1. 编译预测无法正常工作(有时会出错)。
  2. 您没有在代码中using System.Text.RegularExpressions ,因此当您说Regex时,它System.Text.RegularExpressions.Regex您的意思是System.Text.RegularExpressions.Regex

要回到原来的问题:

删除C#中所有非字母字符的最佳方法是什么?

您采用的方法适用于小字符串,但[^A-Za-z0-9]将删除非字母数字和[^A-Za-z]非字母字符。 这假设您已经被限制(或想要添加限制)US-ASCII字符。 要包括áœßδ类的字母,因为你处理真实的单词而不是计算机代码我会使用@"\P{L}"@"[^\p{L}\p{N}]"允许所有字母和数字。

如果你正在处理非常大的文本(很多千字节),那么最好通过过滤流来读取它,这样就可以去掉你不想要的字符。