删除C#中所有非字母字符的最佳方法是什么?我查了一下Regex,但是当我这么做时它似乎没有认出正则表达式:
string cleanString = "";
string dirtyString = "I don't_8 really know what ! 6 non alpha- is?";
cleanString = Regex.Replace(dirtyString, "[^A-Za-z0-9]", "");
正则表达式下面有一条红色的摇摆线。有没有办法可以删除简单的非字母字母,如果有的话,有些人可以提供样本吗?我不确定循环和数组是否可行,以及如何获取所有非字母字符?我假设我必须要做的事情,如果不等于A-Z或0-9,然后用“”删除?
答案 0 :(得分:9)
您可以使用LINQ这样做:
var cleanString = new string(dirtyString.Where(Char.IsLetter).ToArray());
您可以查看MSDN上的其他字符检查。
答案 1 :(得分:2)
正则表达式下面带有一条红色的摇摆线。
然后:
using System.Text.RegularExpressions
,因此当您说System.Text.RegularExpressions.Regex
时,Regex
无法解决问题。回到原来的问题:
在C#中删除所有非字母字符的最佳方法是什么?
您采用的方法适用于小字符串,但[^A-Za-z0-9]
将删除非字母数字和[^A-Za-z]
非字母字符。这假设您已经被限制(或想要添加限制)US-ASCII字符。要包含á
,œ
,ß
或δ
等字母,因为您处理的是真实的字而不是计算机代码,我会使用@"\P{L}"
或@"[^\p{L}\p{N}]"
允许所有字母和数字。
如果你正在处理非常大的文本(很多千字节),那么最好通过过滤流来阅读它,这样就可以去掉你不想要的字符。