2014-01-20 60 views
3

我有以下具有文本文件中的文本:从文本文件中删除制表符和空格

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); 
       } 
      } 

我使用检查以下“行”变量中的值的断点:

"Contact Name" 
"Contact Number\r\n\r\n" 

abov e行代码删除\t\t|\t\t但添加\r\n\r\n。我如何一次删除\t\t|\t\t\r\n\r\n。请建议我。等待回复。感谢

回答

1

您可以使用:

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

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

+0

我想哟你还需要添加'\ t'字符来修剪 –

+0

效率,如果你先按'|'分割,只有你可以修改{'r','\ n','\ t',''}得到的所有字符串(不仅仅是结尾)并得到相同的结果。这可能是更一般的解决方案,并涵盖更多的案例。 – maricn

0

由于您尝试从文件中删除所有字符(如\ t,\ n或\ r),我建议您将所有filecontent读为一个字符串并执行一个简单的.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); 
1

您可以使用

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 
} 
1

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

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

拆分文本由|字符,然后修剪由每行的起点和终点删除制表符,空格和换行字符(你也可以使用Trim()没有在这种情况下,参数的每一行,因为所有的字符,你要删除被认为是空白字符):

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

这将产生两行顺序:

"Contact Name" 
"Contact Number"