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

Dor*_*eka 2 c# desktop-application

我将使用我的计算机读取文件

   StreamReader sr = new StreamReader(FileName);

            string str = sr.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)

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

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

Tho*_*que 5

您可以使用以下String.Replace方法:

string str = sr.ReadToEnd().Replace("\r", "").Replace("\n", "");
Run Code Online (Sandbox Code Playgroud)

但是,如果字符串很长并且你有很长的非法字符列表,那么这不是一个好主意,因为每次调用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);
Run Code Online (Sandbox Code Playgroud)

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

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

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

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