Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从文本文件中删除制表符和空格_C# - Fatal编程技术网

C# 从文本文件中删除制表符和空格

C# 从文本文件中删除制表符和空格,c#,C#,我有一个文本文件,其中包含以下文本: Contact Name | Contact Number 如上面的联系人姓名\t\t\t\t联系人号码,我正在使用以下代码删除\t\t\t: using (StreamReader sr = File.OpenText(fileName)) { string s = String.Empty; while ((s = sr.

我有一个文本文件,其中包含以下文本:

Contact Name            |           Contact Number
如上面的
联系人姓名\t\t\t\t联系人号码
,我正在使用以下代码删除
\t\t\t

 using (StreamReader sr = File.OpenText(fileName))
            {
                string s = String.Empty;
                while ((s = sr.ReadToEnd()) != null)
                {
                 string[] line = s.Split(new string[] {"\t\t|\t\t"}, StringSplitOptions.RemoveEmptyEntries );
                }
            }
我使用断点检查下面“line”变量中的值:

"Contact Name"
"Contact Number\r\n\r\n"
上面的代码行删除
\t\t |\t\t
,但添加
\r\n\r\n
。如何一次删除
\t\t |\t\t
\r\n\r\n
。请推荐我。等待答复。谢谢

您可以使用:

s = s.TrimEnd(new char[] { '\r', '\n' });

这将从字符串末尾删除所有换行符。

由于您试图从文件中删除所有字符(如\t、\n或\r),我建议您将所有文件内容作为字符串读取,并执行一个简单的操作,这比使用
.Split(“”).Join(“”)方法稍微快一点

StringBuilder sb = new StringBuilder();
using (StreamReader sr = new StreamReader(fileName)) 
{
    String line;
    while ((line = sr.ReadLine()) != null) 
    {
        sb.AppendLine(line);
    }
}
string content = sb.ToString();

// Remove all tabs and new lines
string cleanedContent = content.Replace('\t', String.Empty)
                               .Replace('\r', String.Empty)
                               .Replace('\n', String.Empty)
                               .Replace('|', String.Empty);
您也可以在“\r\n\r\n”上拆分,它将被删除

string[] line = s.Split(new string[] {"\t\t|\t\t", "\r\n\r\n"}, StringSplitOptions.RemoveEmptyEntries );

|
字符分割文本,然后通过删除每行开头和结尾的制表符、空格和新行字符来修剪每行(在这种情况下,您也可以不带参数地使用
trim()
,因为要删除的所有字符都被视为空白字符):

这将产生两行的序列:

"Contact Name"
"Contact Number"

我认为您还需要添加“\t”字符来修剪效率,如果您首先只按“|”进行分割,那么您可以修剪(而不仅仅是在末尾)通过{“\r'、“\n'、“\t'、”}得到的所有字符串,并得到相同的结果。它可能是更一般的解决方案,并涵盖更多的情况。
"Contact Name"
"Contact Number"