2016-03-16 149 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

相關問題