2014-01-20 97 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"