2016-03-16 4 views
0

Я создаю конвертер CSV, для этого мне нужно заменить все пробелы на «;». Я уже сделал этот шаг. Проблема в том, что у меня есть 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; 

Любая помощь? :)

EDIT

Вот мой полный код:

 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

Ты человек, он отлично работает! – DanyDC

Смежные вопросы