using System.Collections.Generic;
using System.Globalization;
using System.Text.RegularExpressions;
public static void Main()
string input = @"Datum;Wertstellung;Kategorie;Name;Verwendungszweck;Konto;Bank;Betrag;Währung
31.10.2019;01.11.2019;;Some Text;;;;-42,89;EUR
31.10.2019;01.11.2019;;Some Text;;;;-236,98;EUR
31.10.2019;31.10.2019;;Some Text;;;;-200;EUR
30.10.2019;29.10.2019;;Some Text;;;;204,1;EUR
30.10.2019;31.10.2019;;Some Text;;;;-646,98;EUR";
string output = ProcessCSVInline(input);
Console.WriteLine("Output CSV:");
Console.WriteLine(output);
private static string ProcessCSVInline(string csvInput)
List<string> liste = new List<string>();
liste.Add("Belegdatum,Buchungsdatum,Belegnummer,Buchungstext,Verwendungszweck,Soll,Haben,Betrag,Währung");
CultureInfo ci = new CultureInfo("de-DE");
System.IO.StringReader file = new System.IO.StringReader(csvInput);
while ((line = file.ReadLine()) != null)
var cellArray = Regex.Split(line, @"[;](?=(?:[^\""]|\""[^\""]*\"")*$)")
.Select(s => Regex.Replace(s.Replace("\"\"", "\""), "^\"|\"$", "")).ToArray();
if (decimal.TryParse(cellArray[(int)CsvColumn.Betrag], NumberStyles.Any, ci, out betrag))
cellArray[(int)CsvColumn.Soll] = "42590";
cellArray[(int)CsvColumn.Haben] = "441206";
cellArray[(int)CsvColumn.Soll] = "441206";
cellArray[(int)CsvColumn.Haben] = "42590";
cellArray[(int)CsvColumn.Belegnummer] = "a dummy text";
Console.WriteLine("Fehler beim Analysieren der Eingabezeile,\n" +
counter + ":> {line} \n " +
new String(' ', counter.ToString().Length) + " - " + cellArray.Length + " Cells\n " +
"|" + String.Join("|", cellArray) + "|\n " +
" Zeile wird verworfen, weiter!");
liste.Add(string.Join(",", cellArray.Select(x => x.Contains(',') ? "\"" + x + "\"" : x)));
var output = new StringBuilder();
output.Append(String.Join(Environment.NewLine, liste));
return output.ToString();
throw new ApplicationException("Der Gewählte Prozess wird bereits von einem anderen verwendet,\n " +
" bitte versuchen sie es erneut", ex);