2016-03-16 153 views
0

我制作了一个CSV转换器,为此,我需要用“;”替换所有的空格。我已经做了这一步。问题是我有一个多行mod的texbox。这里是我的实际代码:在字符串的每一行添加一个字符

string[] Espace1 = new string[] { " " }; 
foreach (string contenu in content1.Split(Espace1, StringSplitOptions.RemoveEmptyEntries)) 
{ 
    content1 = content1.Replace(" ", ";"); 
    File.WriteAllText(path1, content1); 
} 

这里是输出:(例子)

15;16;13;21 
15;49;47 
46;78;15 

所以该文件是很好解释像一个CSV我需要添加一个“;”在每行的结尾处。像:

15;16;13;21; 
15;49;47; 
46;78;15; 

任何帮助吗? :)

编辑

这里是我的完整代码:

 string nom = tbxNom.Text; 
     #region Normal 
     try 
     { 
      string content1 = tbxArret.Text; 
      string path1 = @"C:\Users\DanyWin\Desktop\CsvOutput\" + nom + ".csv"; 
      string[] Espace1 = new string[] { " " }; 
      foreach (string contenu in content1.Split(Espace1, StringSplitOptions.RemoveEmptyEntries)) 
      { 
       content1 = content1.Replace(" ", ";"); 
       File.WriteAllText(path1, content1); 
      } 

     } 
     catch 
     { 
      lblInfo.Text = "Erreur"; 
     } 
+0

全部@derpirscher – DanyDC

+0

对不起,删除我的意见意外。问题是,content1是否包含所有行 – derpirscher

+0

是的,它包含了所有这些行,我只是将所有的空格分开来替换为“;” – DanyDC

回答

0

content1似乎包含整个文件。

所以,如果你想分行添加分号,你可以用分号和换行符替换换行符。

content1 = content1.Replace("\n", ";\n"); 

你可以让你的代码更容易一点:

string nom = tbxNom.Text; 
#region Normal 
try 
{ 
    string content1 = tbxArret.Text; 
    string path1 = @"C:\Users\DanyWin\Desktop\CsvOutput\" + nom + ".csv"; 
    var lines = content1.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries) 
       .Select(line => Regex.Replace(line, @"\s+", ";") + ";"); 
    content1 = String.Join("\n", lines); 
    File.WriteAllText(path1, content1); 
} 
catch 
{ 
    lblInfo.Text = "Erreur"; 
} 
+1

这是不正确的。首先,空间被替换为;。只有那些在行尾需要额外的半色和新行 – MPavlak

+0

@MPavlak这就是为什么新行添加了分号。我不确定我明白你的意思。你能详细说明一下吗? – Domysee

+0

第一个替代方案是将空间换成分号。这是不是在这里做 – MPavlak

0
content1 = string.Concat(content1.Replace(" ", ";"), ";"); 

删除所有空格,然后CONCAT “;”最后

+0

它把所有的“;”最后: 15; 19; 17 15; 17; 18; 156 ;;;;;;;;;;;;;;;;;;;;; – DanyDC

0
char []split = new char[]{' '}; 

//replaces all " " with ";", contiguous " " will be replaced with a single ";" 
var c2 = String.Join(";", content1.Split(split, StringSplitOptions.RemoveEmptyEntries)); 

//replaces all newlines with a semicolon followed by a newline, thus appends a semicolon to the end of line. 
var c3 = c2.Replace(System.Environment.NewLine, ";"+System.Environment.NewLine); 

//If the file did not end with an NewLine, append a semicolon to the last line 
if (!c3.EndsWith(System.Environment.NewLine)) c3+=";"; 

File.WriteAllText(path, c3); 

这不是最快的解决方案,但它的工作原理。

+0

我是否必须将此代码放入循环中? – DanyDC

+0

否。第一行负责处理所有空间。 – derpirscher

+0

Ty男人完美! – DanyDC

相关问题