2011-08-30 88 views
2

我有一個文本文件,如下圖所示:如何用一個字符替換文本文件中的所有空格?

string string 
string     string 
string string 
string   string 

我想取代所有這些空間與管道(|)字符。
是否有任何方法在C#做到這一點?

我使用下面的代碼讀取和寫入文件:
How do I read and edit a .txt file in C#?

編輯:接受的答案使用代碼後
我得到了
系統的線下面的錯誤.IO.File.WriteAllLines(...

找不到文件'C:\ Program Files \ Common Files \ Microsoft Shared \ DevServer \ 10.0 \ infilename.txt'。

[使用絕對路徑來解決]

感謝意見和答案:
不是一個管道的每個空間 - >在一個管道每行的所有空格...

感謝提前

+1

你嘗試過什麼嗎? – Tipx

+1

@MoonLight - 如果您不提供絕對路徑(例如C:\ infilename.txt),則它將嘗試解析相對於包含執行程序集的目錄的文件名。 – detaylor

+0

感謝您的評論... – MoonLight

回答

4

更改aanund的回答:

System.IO.File.WriteAllLines(
    "outfilename.txt", 
    System.IO.File.ReadAllLines("infilename.txt").Select(line => 
     string.Join("|", 
      line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries) 
     ) 
    ).ToArray() 
); 
+1

當然,你必須把infilename.txt變成你的文件名!並outfilename.txt到你的輸出文件名中 – onof

2

這可能是你在找什麼

var regex = new Regex("[ ]+", RegexOptions.Compiled); 
regex.Replace(inputString, replaceCharacter); 

您閱讀整個文件之後,使用這個表達式並把它寫回文件。

3

像這樣的東西應該工作:

​​

注意我剛剛從鏈接複製並改變它來搜索空白和替換用的管道。

2

您可以嘗試使用正則表達式:

string text = "test test test   test"; 
string cleanText = System.Text.RegularExpressions.Regex.Replace(text, @"\s+", "|"); 
0

使用只需更換:

 string original = "test test test test"; 
     string formatted = original.Replace(" ", " ").Replace(" ", "|"); 

更換2個相鄰空間的所有出現的只有1空間,然後更換與管道的最後空間。

相關問題