Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
25 / 11 / 4
Регистрация: 08.01.2019
Сообщений: 533
1

Преобразовать строку - данные из файла, в List<int>

17.04.2020, 18:36. Просмотров 296. Ответов 8
Метки нет (Все метки)


Здравствуйте, есть ли способ преобразовать строку (string lines) - данные из файла, в List<int> в одну строчку кода с помощью Linq или регулярных выражений?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2020, 18:36
Ответы с готовыми решениями:

Как преобразовать строку в список List<int>
в строке хранятся значения 123,124,135,98. Как их преобразовать и поместить в List&lt;int&gt;?

Linq преобразовать DataTable в Dictionary<int,List<int>
Добрый день, помогите пожалуйста, со следующей задачей. Есть DataTable состоящий из 2 колонок:...

Преобразовать ListBoxItem в List<int>
Есть ListBox в нем набор ListBoxItem с числовыми значениями. Хочу преобразовать SelectedItems в...

Как преобразовать List<int> в массив?
Здравствуйте есть такой метод public static int Number(int n) { List&lt;int&gt; myList = new...

8
8 / 6 / 2
Регистрация: 04.05.2019
Сообщений: 58
17.04.2020, 19:34 2
Что именно надо сделать? Регулярным выражением отделить числа, а далее Array.ConvertAll в конструктор списка. Как вариант.
0
25 / 11 / 4
Регистрация: 08.01.2019
Сообщений: 533
17.04.2020, 19:47  [ТС] 3
Конкретно сейчас в текстовом файле по два числа в строке - пара X Y. Мне как то нужно их разместить по соответствующим массивам или спискам, что бы потом передавать в Application.Run(new MyForm1(X,Y)) для отрисовки графика с помощью Graphics, нужны Linq или регулярные выражения, чтобы предусмотреть случаи когда есть еще другие варианты данных в других файлах, например Application.Run(new MyForm1(X,Y,Z)) - когда данные в файле имею три таблицы(трехмерные координаты).
Если бы я использовал класс File было б легче, но по условию задачи, приложение должно запускаться с консоли (Prgoram.exe <1.txt), потому я додумался так делать, но уже понял, что это неправильно
C#
1
2
3
4
5
6
7
8
9
            string line;
            string str = null;
            List<int> points = new List<int>();
            while ((line = Console.ReadLine()) != null)
            {
                str = line.Trim();
               
            }
            points.AddRange(str.Split(' ', '\n').Select(int.Parse));
0
8 / 6 / 2
Регистрация: 04.05.2019
Сообщений: 58
17.04.2020, 20:12 4
Цитата Сообщение от Vlast001 Посмотреть сообщение
приложение должно запускаться с консоли
Т.е. ввод производится с консоли, а не из файла?

Не понимаю, где возникают затруднения и почему нельзя без Linq парсить строку с любым количеством чисел.

C#
1
2
3
4
5
List<int[]> points = new List<int[]>();
string line;
 
while (!string.IsNullOrEmpty(line = Console.ReadLine()))
    points.Add(Array.ConvertAll(line.Split(' '), int.Parse));
В каждой строке вводится по несколько чисел, они записываются как массив чисел в список. Доступ осуществляется как List(ну или в данном случае points)[x1][x2], где x1 - номер массива, x2 - номер элемента в нем. Получается ступенчатый/рваный список.
0
25 / 11 / 4
Регистрация: 08.01.2019
Сообщений: 533
17.04.2020, 20:23  [ТС] 5
Цитата Сообщение от LuminoDiode Посмотреть сообщение
Т.е. ввод производится с консоли, а не из файла?
Читается файл через стандартный ввод...допустим так lab6.2>a.exe <1.txt или как я показывал выше, разницы нет

Цитата Сообщение от LuminoDiode Посмотреть сообщение
1
2
3
4
5
List<int[]> points = new List<int[]>();
string line;
while (!string.IsNullOrEmpty(line = Console.ReadLine()))
    points.Add(Array.ConvertAll(line.Split(' '), int.Parse));
вот что произошло после вывода списка в который добавляются элементы:
System.Int32[]
System.Int32[]
System.Int32[]
System.Int32[]
System.Int32[]
System.Int32[]
System.Int32[]
System.Int32[]
System.Int32[]
System.Int32[]
System.Int32[]
System.Int32[]
System.Int32[]
System.Int32[]
System.Int32[]
System.Int32[]
0
8 / 6 / 2
Регистрация: 04.05.2019
Сообщений: 58
17.04.2020, 20:32 6
Цитата Сообщение от Vlast001 Посмотреть сообщение
вот что произошло после вывода списка в который добавляются элементы:
System.Int32[]
Потому что вы пытаетесь вывести массивы, а не их элементы.
C#
1
foreach(var Arr in points) Console.WriteLine(string.Join(" ", Arr));
Добавлено через 37 секунд
Прочитайте еще раз, что я вам написал. В список добавляются массивы элементов, а не сами элементы.
0
25 / 11 / 4
Регистрация: 08.01.2019
Сообщений: 533
17.04.2020, 20:39  [ТС] 7
LuminoDiode, Список массивов...это тяжко и странно, зачем Вы так усложнили
0
8 / 6 / 2
Регистрация: 04.05.2019
Сообщений: 58
17.04.2020, 20:48 8
Цитата Сообщение от Vlast001 Посмотреть сообщение
это тяжко и странно
Полный аналог двумерных массивов. Если не можете с таким разобраться, то вернитесь к основам, не стоит сразу браться за такие задачи.
0
61 / 33 / 12
Регистрация: 24.11.2018
Сообщений: 186
17.04.2020, 21:04 9
Цитата Сообщение от Vlast001 Посмотреть сообщение
Конкретно сейчас в текстовом файле по два числа в строке - пара X Y. Мне как то нужно их разместить по соответствующим массивам или спискам, что бы потом передавать в Application.Run(new MyForm1(X,Y)) для отрисовки графика с помощью Graphics, нужны Linq или регулярные выражения, чтобы предусмотреть случаи когда есть еще другие варианты данных в других файлах, например Application.Run(new MyForm1(X,Y,Z)) - когда данные в файле имею три таблицы(трехмерные координаты).
Если бы я использовал класс File было б легче, но по условию задачи, приложение должно запускаться с консоли (Prgoram.exe <1.txt), потому я додумался так делать, но уже понял, что это неправильно
Попробую подсказать немного пока код писать лень(без обид), итак:
1. В строчный массив z вы считываете через File.ReadAllLines*; //args[1]?
2а. По значениям из нулевой строки смотрите z.IndexOf(' ') == LastIndexOf(' '); //Равны -> в форму с двумя параметрами, и вообще два параметра
2б. По значениям из нулевой строки смотрите z.Split(new char{' '}).Length == 2; // то же самое
Объявите не List<int> points = new List<int>();, а хотя бы List<Point> или классов содержащих пару значений(или тройку, кортежи, например)
3. Через foreach по z прогоните заполнение этого списка, например:
a.X = z[i].Split(new char{' '})[0];
a.Y = z[i].Split(new char{' '})[1];
или по-другому.
И в форму вывода передавайте этот список или ссылку на него.

Надеюсь, хоть чем-то помог, - просто нет настроения эмулировать всю эту систему. Я чисто теоретически хотел подсказать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2020, 21:04

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Как преобразовать List<int> в Массив <string>?
Есть такой лист типа int List&lt;int&gt; L = new List&lt;int&gt;(); L.Add(1); ...

Вывести данные из List (в листе структура Struct (в структуре данные формата int, short, byte) в textBox
Не выводятся данные

Преобразовать строку в int
Есть файл: 13 23 41 12 32 0 2 4

Преобразовать строку в int
как из string преобразовать в int form2-&gt;label4-&gt;Text = s;

Как преобразовать некорректную строку в int?
У меня есть некорректная строка, как её преобразовать в int?

Прочитать строку из буфера и преобразовать в int
Добрый день уважаемые профессионалы! Есть буфер. Получены данные из ком порта. в формате: 32 43...


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

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

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