如何修剪字符串中的非法字符

时间:2010-08-26 08:54:01

标签: c# desktop-application

我将使用

从我的电脑上读取一个文件
   StreamReader sr = new StreamReader(FileName);

            string str = sr.ReadToEnd();

在这里我得到一些非法字符,如/ n,/ r和其他一些。

我想用空字符替换非法字符。我尝试制作一个角色阵列,但我无法删除那些,所以任何人都可以帮助我

3 个答案:

答案 0 :(得分:5)

您可以使用String.Replace方法:

string str = sr.ReadToEnd().Replace("\r", "").Replace("\n", "");

但是,如果字符串很长且你有很长的非法字符列表,那不是一个好主意,因为每次调用Replace都会创建一个String的新实例。更好的选择是使用Linq过滤掉非法字符:

char[] illegalChars = new[] { '\r', '\n' }; // add other illegal chars if needed
char[] chars = sr.ReadToEnd().Where(c => !illegalChars.Contains(c)).ToArray();
string str = new String(chars);

然而,对Contains的调用会增加开销,直接针对每个非法字符进行测试会更快:

char[] chars = sr.ReadToEnd().Where(c => c != '\r' && c != '\n').ToArray();
string str = new String(chars);

为了完整起见,这是一个更快的版本:

StringBuilder sb = new StringBuilder();
foreach(char c in sr.ReadToEnd())
{
    if (c != '\r' && c != '\n')
        sb.Append(c);
}
string str = sb.ToString();

答案 1 :(得分:3)

StreamReader sr = new StreamReader (FileName);

StringBuilder sb = new StringBuilder (sr.ReadToEnd());

sb.Replace ("\r\n", String.Empty);
sb.Replace ("\n", String.Empty);

string hereIsYourString = sb.ToString ();

答案 2 :(得分:3)

string str = string.Join(string.Empty, File.ReadAllLines(FileName));