using DevExpress.Pdf; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace BeWo.Service.Import.AvisImport { public class LvrAvisTextAbschnittReader { public static TextAbschnitt LeseBisText(string[] lines, int zeilenIndex, string suchText) { return TextAbschnittReader.LeseBisText(lines, zeilenIndex, suchText, false, true, false); } public static TextAbschnitt LeseBisDatum(string[] lines, int index, bool addDatumsZeile) { var ta = new TextAbschnitt(); StringBuilder sb = new StringBuilder(); while (index < lines.Length) { var line = lines[index]; if (line.Length >= 7) { var datumsText = line.Substring(0, 7); // Das Datum muss in den ersten 7 Zeichen stehen if (datumsText.IndexOf("/") < 0 && DateTime.TryParse(datumsText, out var d1)) { //Datum gefunden, lese Daten aus den vorherigen Zeilen if (addDatumsZeile) { sb.AppendLine(line); } ta.Success = true; ta.ZeilenIndex = index; ta.Text = sb.ToString(); return ta; } } sb.AppendLine(line); index++; } return ta; } public static decimal? LeseBetrag(string zeile, bool ignoriereEuroZeichen) { String euroZeile = zeile; if (euroZeile.IndexOf("€") > 0 || ignoriereEuroZeichen) { if (!ignoriereEuroZeichen) { euroZeile = euroZeile.Substring(0, euroZeile.IndexOf("€")).Trim(); } if (euroZeile.LastIndexOf(" ") > 0) { euroZeile = euroZeile.Substring(euroZeile.LastIndexOf(" ")).Trim(); } if (Decimal.TryParse(euroZeile, out var betrag)) { //mehr als zwei Nachkommastellen auf zwei kürzen ohne Rundung return Decimal.Truncate(betrag * 100) / 100; } } return null; } } }