我将使用
从我的电脑上读取一个文件 StreamReader sr = new StreamReader(FileName);
string str = sr.ReadToEnd();
在这里我得到一些非法字符,如/ n,/ r和其他一些。
我想用空字符替换非法字符。我尝试制作一个角色阵列,但我无法删除那些,所以任何人都可以帮助我
答案 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));