Не получается удалить строки в c# при парсинге

У меня есть код который из основного файл разбивает текст на 3 других (Для сотрудников трекеров и приоритетов) и очищает от ненужных символов

проблема в том что при очистке у меня появляются не полные строки по типу:

Консультация АПРИКОТ КАПИТАЛ

А полная строка выглядит так:

Ошибка САЙТ ДиБ СИСТЕМС опечатка на сайте опечатка на сайте

(Строки которые сформировались не правильно я хочу удалить )

Вот часть когда где это происходит(Часть для трекеров):

private void ProcessTrackerFile(string filePath)
{
    string[] lines = File.ReadAllLines(filePath);
    var updatedLines = new List<string>();
    var taskCountPerTracker = new Dictionary<string, int>();

    foreach (string line in lines)
    {
        string[] fields = Regex.Split(line, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
        if (fields.Length >= 7)
        {
            string trackerId = fields[5].Trim();
            if (TrackerDictionary.ContainsKey(trackerId))
            {
                string trackerName = TrackerDictionary[trackerId];
                fields[5] = trackerName;
                fields[0] = fields[5];
                fields[5] = "";
                fields[4] = "";

                if (taskCountPerTracker.ContainsKey(trackerName))
                {
                    taskCountPerTracker[trackerName]++;
                }
                else
                {
                    taskCountPerTracker[trackerName] = 1;
                }
            }
        }

        string updatedLine = string.Join(",", fields).Trim();
        updatedLines = updatedLines.Select(line => line.TrimEnd()).ToList();
        updatedLines.Add(updatedLine);
    }

    var random = new Random();
    updatedLines = updatedLines.OrderBy(x => random.Next()).ToList();

    string newFilePathT = Path.Combine(Path.GetDirectoryName(filePath), "Tracker_task_" + Path.GetFileName(filePath));
    File.WriteAllLines(newFilePathT, updatedLines);

    string content = CleanContent(File.ReadAllText(newFilePathT));

    foreach (var trackerName in TrackerDictionary.Values)
    {
        string regexPattern = @"\b" + Regex.Escape(trackerName) + @"\b";
        content = Regex.Replace(content, regexPattern, "\r\n" + trackerName + "\t");
    }

    bool shouldWriteLine = !ShouldSkipLine(content);

    if (shouldWriteLine)
    {
        File.WriteAllText(newFilePathT, content);
    }

    // Чтение файла заново, удаление пустых строк и запись обновленного содержимого обратно в файл
    string[] updatedContentLines = content.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);
    File.WriteAllLines(newFilePathT, updatedContentLines);

    //Удаление пробелов в конце строк и после таба
    string[] finalLines = File.ReadAllLines(newFilePathT);
    for (int i = 0; i < finalLines.Length; i++)
    {
        finalLines[i] = finalLines[i].TrimEnd();
        finalLines[i] = Regex.Replace(finalLines[i], @"\t\s+", "\t");
    }
    File.WriteAllLines(newFilePathT, finalLines);


    if (taskCountPerTracker.Any())
    {
        var firstValue = taskCountPerTracker.First().Value;
        tasksCountContent.AppendLine($"class_weights = {{ ");

        foreach (var entry in taskCountPerTracker)
        {
            double calculatedValue = (100.0 / ((entry.Value * 100.0) / firstValue));
            tasksCountContent.AppendLine($" \"{entry.Key}\": {calculatedValue.ToString("F2", CultureInfo.InvariantCulture)},");
        }
        tasksCountContent.AppendLine($"}}");

        File.WriteAllText(tasksCountFilePath, tasksCountContent.ToString());
    }
    else
    {
        Console.WriteLine("Словарь taskCountPerTracker пуст. Невозможно вычислить firstValue.");
    }
}
private string CleanContent(string content)
{
    content = content.Trim();
    content = Regex.Replace(content, "<.*?>|</.*?>", " ").Trim();
    content = Regex.Replace(content, @"(https?:\/\/(?:www\.)?[a-zA-Z0-9]{2,}(?:\.[a-zA-Z0-9]{2,})+(?:\/[a-zA-Z0-9]{2,})?)", " ").Trim();
    content = Regex.Replace(content, @"[^a-zA-Z0-9а-яА-Я\r\n\s]", " ").Trim();
    content = Regex.Replace(content, @"\b[a-zA-Zа-яА-Я0-9]\b", " ").Trim();

    // Удаление ненужных слов
    string[] wordsToRemove = { "Добрый день", "Коллеги", "Прошу", "Спасибо", "Доброе утро", "Добрый вечер", "Здравствуйте", "прилагаю", "скриншот", "картинку" };
    foreach (var word in wordsToRemove)
    {

        content = content.Replace(word, " ").Trim();
    }

    // Удаление остатков html сокращений
    content = content.Replace("&nbsp;", " ").Replace("&quot;", " ").Replace("&lt;", " ").Replace("&gt;", " ").Trim();

    // Замена 2 и более пробелов на 1 пробел
    content = Regex.Replace(content, @"\s+", " ").Trim();

    return content;
}
bool ShouldSkipLine(string line)
{
    // Паттерн для строки с текстом, за которым следует табуляция, а затем только заглавные буквы
    string pattern = @"^(Ошибка|Разработка|Консультация)\t[^\t]+\t[А-Я\s]+$";

    return Regex.IsMatch(line, pattern);
}

Ответы (0 шт):