2011-04-19 38 views
1

使用StreamReader打開文本文件並獲取其內容。我需要從文件中抓取沒有任何轉義字符(\ n,\ r,\「等)的文本。現在谷歌現在失敗了我的想法嗎?從無特殊字符的文件中讀取

+0

做一個與string.replace()? – Stefan 2011-04-19 14:10:55

回答

4

從文件中讀取的文本中沒有轉義字符。在編寫字符串文字時使用轉義字符,例如在程序代碼中。我假設你的意思是你想用純空格替換任何寫空格字符。

您可以使用正則表達式來匹配空格字符並用空格替換它們。它更容易使用File.ReadAllText來讀取文件中的文本:

string text = Regex.Replace(File.ReadAllText(fileName), @"[\r\n\t ]+", " "); 
+0

謝謝回答 – thinkdevcode 2011-04-19 14:44:21

3

爲什麼不直接撥打ReadToEnd然後Split字符串

// using statement and whatever code here 

var rawContent = sr.ReadToEnd(); 

var usefulContent = rawContent.Split(new []{ "\r\n", "\\" }, 
    StringSplitOptions.RemoveEmptyEntries); 

注:?你要調整分隔在Split方法,這僅僅是一個例子

你也可以簡單地Replace不需要的字符:

// using statement and whatever code here 

var rawContent = sr.ReadToEnd(); 

var usefulContent = rawContent 
    .Replace("\r\n", "") 
    .Replace("\\", ""); 
+0

謝謝回答 – thinkdevcode 2011-04-19 14:43:52

1

如果你想爲你流做到這一點,調用StreamReader.Read()在while循環,並通過一個測試的人物之一。

如果您能夠將整個文件內容抓取到一個字符串中,請使用正則表達式去除不需要的字符。退房RegexHero:http://regexhero.net/tester/

1

假定您已經閱讀整個文件中的一個字符串s

for (int i = 0; i < s.Length; i++) 
{ 
    if (char.IsLetterOrDigit(s, i)) // or if (!char.IsWhiteSpace(s, i)) 
    { 
     // append to StringBuilder 
    } 
} 

如果IsLetterOrDigit或IsWhiteSpace不適合你的需求,你可以創建自己的方法,並調用它。

1

您可以使用通用的功能跳過你並不需要所有的字符:

public string SkipChars(string InputString, char[] CharsToSkip) 
{ 
    string result = InputString; 
    foreach (var chr in CharsToSkip) 
    { 
    result = result.Replace(chr.ToString(), ""); 
    } 

    return result; 
} 

用法:

string test = "one\ntwo\tthree"; 

MessageBox.Show(SkipChars(test, new char[] { '\n', '\t' })); 
+0

感謝您的解決方案 – thinkdevcode 2011-04-19 14:45:06

相關問題