Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
georgmann
1 / 1 / 0
Регистрация: 29.01.2018
Сообщений: 22
1

Объединение/склеивание группы строк в одну строку

29.01.2018, 17:54. Просмотров 1271. Ответов 22
Метки нет (Все метки)

Здравствуйте, задача следующая...
Существует файл 1.txt, в котором находится очень много строк в таком виде:
текст1 текст1 текст1
текст2 текст2 текст2
текст3 текст3 текст3
текст4 текст4 текст4
----------
текст5 текст5 текст5
текст6 текст6 текст6
текст7 текст7 текст7
текст8 текст8 текст8
----------
Необходимо объединить/склеить группы строк, которые разделены символами (----------) в одну строку, каждую последнюю строку отдельной группы продублировать/добавить в конец строки а также добавить дополнительные/разные символы вначале строки, между строками, между предпоследней и последней (продублированной) строкой и в конце, чтобы получился такой результат:
$$$текст1 текст1 текст1###текст2 текст2 текст2###текст3 текст3 текст3###текст4 текст4 текст4@@@текст4 текст4 текст4***
----------
$$$текст5 текст5 текст5###текст6 текст6 текст6###текст7 текст7 текст7###текст8 текст8 текст8@@@текст8 текст8 текст8***
----------
На C# такое возможно сделать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2018, 17:54
Ответы с готовыми решениями:

Объединение строк из файла в одну
Снова здравствуйте, уважаемые форумчане... Имеется вопрос - Как с текстового файла все строки...

Склеиваем массив строк в одну текстовую строку
Необходимо склеить массив строк в одну строку. Вот мой код: StrTmp = ""; ...

Не происходит склеивание строк (networkStream)
Произвожу чтение из потока и с некоторых компов информация считывается и в переменной...

Объединение картинок в одну и добавление текста на финальное изображение
Доброго дня суток, форумчане! Есть задача : имеется несколько png изображений разного размера....

Объединение строк в одну строку
здравствуйте! как организовать в bat такое приведу пример 1.txt написано "ира" во втором 2.txt...

22
georgmann
1 / 1 / 0
Регистрация: 29.01.2018
Сообщений: 22
07.12.2018, 00:55  [ТС] 21
Добрый вечер.
До сего дня успешно пользовался данным кодом:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System.IO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            var sourse = File.ReadAllLines("1.txt", Encoding.Default);
            var target = File.ReadAllLines("2.txt", Encoding.Default);
            var dict = new Dictionary<string, string>();
            for (int i = 0; i < sourse.Length; i += 2)
            {
                for (int j = 0; j < target.Length; j += 2)
                {
                    if (sourse[i] == target[j])
                    {
                        dict.Add(sourse[i + 1], target[j + 1]);
                        break;
                    }
                }
            }
            var result = File.ReadAllLines("3.txt", Encoding.Default).ToList();
            for (int i = result.Count - 1; i >= 0; i--)
            {
                foreach (var item in dict)
                {
                    if (result[i].EndsWith(item.Key))
                    {
                        result.Insert(i - 1, item.Value);
                        break;
                    }
                }
            }
            File.WriteAllLines("result.txt", result, Encoding.Default);
        }
    }
}

Но теперь программа не работает, а выдаёт ошибку: System.ArgumentException: "Элемент с тем же ключом уже был добавлен."
Кликните здесь для просмотра всего текста
Объединение/склеивание группы строк в одну строку

Пожалуйста, помогите понять, в чём проблема, и как исправить?
0
OwenGlendower
Супер-модератор
Эксперт .NET
10590 / 9103 / 3882
Регистрация: 17.03.2014
Сообщений: 18,230
Записей в блоге: 1
Завершенные тесты: 2
09.12.2018, 00:29 22
georgmann, это значит что в первом файле повторяются строки. Приведенный код исходит из того так не может быть. Думаю следует удалить дубль.
1
georgmann
1 / 1 / 0
Регистрация: 29.01.2018
Сообщений: 22
09.12.2018, 02:32  [ТС] 23
OwenGlendower,
Да, спасибо. Уже разобрался, заменил часть этого кода:
C#
1
2
3
4
5
if (sourse[i] == target[j])
{
    dict.Add(sourse[i + 1], target[j + 1]);
    break;
}
на это:
C#
1
2
3
4
5
6
7
8
if (sourse[i] == target[j])
{
    if (!dict.ContainsKey(sourse[i + 1]))
    {
       dict.Add(sourse[i + 1], target[j + 1]);
    }
    break;
}
и всё работает даже с дублями.
0
09.12.2018, 02:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2018, 02:32

Объединение массива строк в одну строку
Объединение массива строк в одну строку. В чем ошибка? Заранее спасибо! #include &lt;stdio.h&gt; ...

Перенос значений из строк в столбцы. При выполнении по 2-х условий, объединение данных в одну строку. Удаление
Добрый день, подскажите, как решить задачу. Есть выгрузка данных, необходимо перенести значения...

Объединение строк в одну
Приветствую всех. Ребята кто в курсе подскажите как объеденить строки в ListBox . Например есть 4...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru