从文本文件中删除选项卡和空格

时间:2014-01-20 08:16:39

标签: c#

我的文字文件如下:

Contact Name            |           Contact Number

高于Contact Name\t\t|\t\tContact Number而我正在使用以下代码删除\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。请建议我。等待回复。感谢

5 个答案:

答案 0 :(得分:0)

您可以使用:

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

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

答案 1 :(得分:0)

由于您尝试从文件中删除所有字符(例如\ t,\ n或\ r \ n),我建议您将所有文件内容作为字符串读取并执行简单的.Replace(string oldChar, string newChar),这是略微的比使用.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);

答案 2 :(得分:0)

您可以使用

 string[] lines = s.Split('|', StringSplitOptions.None );
 for(int i = 0; i < lines.Length; i++) lines[i] = lines[i].Trim();

for循环有点尴尬但你可以在结果的正常处理中的某处插入Trim()。

使用File.ReadLines替换StreamReader变得更加容易(对大型文件更有效):

//using (StreamReader sr = File.OpenText(fileName))
foreach(string dirtyLine in File.ReadLines(fileName))
{
    string cleanLine = dirtyLine.Trim();
    ... use cleanLine 
}

答案 3 :(得分:0)

您也可以拆分“\ r \ n \ r \ n”,它将被删除。

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

答案 4 :(得分:0)

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

string text = "Contact Name            |           Contact Number";
var lines = text.Split('|').Select(s => s.Trim('\t', '\n', '\r', ' '));

这将产生两行序列:

"Contact Name"
"Contact Number"