2011-08-30 39 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空间,然后更换与管道的最后空间。

相关问题