Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2016, 02:39   #1
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию считать сразу 2-3 тхт

есть два 2 тхт файла, и у меня результат такой что на экране я вижу с начало считывает первый а потом второй файл. А мне надо чтобы было так:
первый файл:1,2,3,4
первый файл:5,6,7,8
пока так выходит:
1
2
3
4
5
6
7
8
должно быть так
15
26
37
48
Код:
StreamReader sr1 = new StreamReader(@"C:\Users\Wiz\Desktop\strings.txt");
            string file = sr1.ReadToEnd();
            StreamReader sr2 = new StreamReader(@"C:\Users\Wiz\Desktop\strings1.txt");
            string file2 = sr2.ReadToEnd();
            Console.WriteLine(file + " " + file2);
komra2 вне форума Ответить с цитированием
Старый 05.07.2016, 07:19   #2
sgmilq7
 
Регистрация: 05.07.2016
Сообщений: 4
По умолчанию

Так у вас будет если только длина файлов одинаковая
Цитата:
должно быть так
15
26
37
48
,
но если действительно это так то можно сделать следующим образом:

если файл номер один выглядит так: 1,2,3,4 (то есть разделитель строк символ запятая)
если файл номер два выглядит так: 5,6,7,8 (то есть разделитель строк символ запятая)

Код:
            StreamReader sr1 = new StreamReader(@"C:\Users\Wiz\Desktop\strings.txt");
            string file = sr1.ReadToEnd();
            StreamReader sr2 = new StreamReader(@"C:\Users\Wiz\Desktop\strings1.txt");
            string file2 = sr2.ReadToEnd();
            
            string[] s1 = file.Split(new Char [] { ',' });
            string[] s2 = file2.Split(new Char[] { ',' });

            for (int i = 0; i < s1.Length; i++)
            {
                Console.WriteLine ("{0} {1}", s1[i], s2[i]);
            }
            Console.ReadLine();
Но повторяю такое решение возможно только если длина файлов одинаковая.
sgmilq7 вне форума Ответить с цитированием
Старый 05.07.2016, 10:02   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
            string[] files = new string[] { "f1.txt", "f2.txt", "f3.txt" };
            var data = files.Select(f => File.ReadAllLines(f)).ToList();
            int max = data.Max(l => l.Length);
            for (int i = 0; i < max; i++)
            {
                Console.WriteLine(string.Join(" ", data.Select(l => i < l.Length ? l[i] : ""));
            }
как-то так.
правда я не ставил цель экономить память
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.07.2016, 10:57   #4
sgmilq7
 
Регистрация: 05.07.2016
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Код:
            string[] files = new string[] { "f1.txt", "f2.txt", "f3.txt" };
            var data = files.Select(f => File.ReadAllLines(f)).ToList();
            int max = data.Max(l => l.Length);
            for (int i = 0; i < max; i++)
            {
                Console.WriteLine(string.Join(" ", data.Select(l => i < l.Length ? l[i] : ""));
            }
как-то так.
правда я не ставил цель экономить память
вы думаете "новичок" поймет как работает ваш код с лямбда функциями?
sgmilq7 вне форума Ответить с цитированием
Старый 05.07.2016, 11:09   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от sgmilq7 Посмотреть сообщение
вы думаете "новичок" поймет как работает ваш код с лямбда функциями?
если так принципиально можно переписать и без них(и без LINQ в принципе)
только вот помня ТС, он особо разбираться не будет в принципе.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.07.2016, 17:40   #6
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию

Цитата:
Сообщение от sgmilq7 Посмотреть сообщение
вы думаете "новичок" поймет как работает ваш код с лямбда функциями?
Кхм..кхм .... как вы будто вы гений, великий кнопкатык, прямо профессионал..раз так пишите

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
разбираться не будет.
будет нужда - буду разбиратся, это только так, тестовые коды, не на каждый день

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Код:
            string[] files = new string[] { "f1.txt", "f2.txt", "f3.txt" };
            var data = files.Select(f => File.ReadAllLines(f)).ToList();
            int max = data.Max(l => l.Length);
            for (int i = 0; i < max; i++)
            {
                Console.WriteLine(string.Join(" ", data.Select(l => i < l.Length ? l[i] : ""));
            }
как-то так.
правда я не ставил цель экономить память

а если мне допустим надо если словами то так:
из f1.txt первая строка, из f2.txt все строки
если первый 1,2,3 второй 1,2,3
то с числами так
1 123
2 123
3 123

Последний раз редактировалось Пепел Феникса; 05.07.2016 в 18:12.
komra2 вне форума Ответить с цитированием
Старый 05.07.2016, 18:12   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы определитесь что уже надо.
Код:
var f1=File.ReadAllLines("file1.txt");
var f2=string.Join("",File.ReadAllLines("file2.txt"));
foreach(var line in f1)
{
   Console.WriteLine("{0} {1}",line,f2);
}
PS: пользуйтесь кнопкой
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.07.2016, 18:50   #8
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вы определитесь что уже надо.
Код:
var f1=File.ReadAllLines("file1.txt");
var f2=string.Join("",File.ReadAllLines("file2.txt"));
foreach(var line in f1)
{
   Console.WriteLine("{0} {1}",line,f2);
}
PS: пользуйтесь кнопкой
надо вот так:
1 123
2 123
3 123
komra2 вне форума Ответить с цитированием
Старый 05.07.2016, 19:00   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну так код я выложил уже.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.07.2016, 19:26   #10
komra2
Новичок
Джуниор
 
Регистрация: 10.04.2015
Сообщений: 733
По умолчанию

тоже самое только не построчно а в строку, то есть так: 1,2,3,1,2,3,
надо так:
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
komra2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как считать txt файл "сразу", без перебора строк? palpetrovich Lazarus, Free Pascal, CodeTyphon 6 15.02.2016 12:34
ВПР из ТХТ Евгений Таб Microsoft Office Excel 7 31.08.2015 08:47
TStringList и тхт mitiay Общие вопросы Delphi 22 26.11.2014 18:56
список ТХТ viks1 Общие вопросы Delphi 4 18.05.2012 11:15
Написать программу, преобразующую файл АВС.ТХТ в файл 123.ТХТ [Паскаль] Djoker Помощь студентам 1 12.12.2010 19:45