0 / 0 / 0
Регистрация: 02.11.2017
Сообщений: 4
1

Нужно вытащить числа из строки в текстовом файле (в переменные)

28.06.2019, 02:22. Показов 1487. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, проблема такова: есть текстовый файл Product.txt в котором содержится 4 строки:
1 - товар4 - 123456
2 - товар3 - 789123
3 - товар2 - 987654
4 - товар4 - 654123
Мне надо вытащить в переменные именно последние цифры типа 123456 и добавить возможность суммировать их(якобы стоимость)
Только начал, по этому ломаю пока что голову как это возможно реализовать.
Сама прога что то вроде меню сделанного из текстового файла.
Нужно именно выбирать нужный товар и чтобы их цены имели возможность суммироваться.
в предположениях через Regex.Match (заранее извиняюсь за безалаберность кода)
Первый текстовый файл Store.txt содержит строки
1 - Список товаров
2 - Выход
Вот мой код:
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace SabislavichApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.Cyan;
            string path = @"C:\Users\Kekislav\Desktop\Store.txt";
            Console.WriteLine();
            Console.WriteLine("Продукция магазина: ");
            using (StreamReader sr = new StreamReader(path, System.Text.Encoding.Default))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
                Console.WriteLine("Нажмите 1 или 2");
                string selection = Console.ReadLine();
 
                ButtonClick();
                void ButtonClick()
                {
                    switch (selection)
                    {
                        case "1":
 
                            string path2 = @"C:\Users\Kekislav\Desktop\Product.txt";
                            Console.WriteLine();
                            Console.WriteLine("Список продукции: ");
                            using (StreamReader sr2 = new StreamReader(path2, System.Text.Encoding.Default))
                            {
                                string line2;
                                while ((line2 = sr2.ReadLine()) != null)
                                {
                                    Console.WriteLine(line2);
                                }
                                Console.WriteLine("Выберите товар: ");
                                Console.ReadKey();
 
                            }
                            break;
                    }
                    string text1 = File.ReadAllText(@"C:\Users\Kekislav\Dekstop\Product.txt");
                    {
 
                    }
                    string selection2 = Console.ReadLine();
                    {
 
                        switch (selection2)
                        {
 
                            case "1":
 
                                break;
                            case "2":
 
                                break;
                            case "3":
 
                                break;
                            case "4":
 
                                break;
                            case "8":
 
                                break;
 
 
 
                        }
                    }
                    Console.ReadKey();
 
                }
            }
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2019, 02:22
Ответы с готовыми решениями:

Внешняя сортировка , нужно отсортировать числа в текстовом файле , метод естественное слияние , вспомогательных файла 2
Главное чтобы числа сортировались в файле , а заполнялись рандомно , если кто то возьметься...

Нужно считать со строки числа в переменные
Всем привет. Глупый вопрос, но все же. Искал где только можно, не смог найти, и вообще не помню,...

Переменные в текстовом файле
Здравствуйте Интересует следующий вопрос Имеется данная строка: Get-Printer -Name '$s' -Full |...

Удалить в текстовом файле 1.txt все строки, которые встречаются в текстовом файле 2.txt
например имеется текстовый файл 1.txt c таким содержанием 111 222 333 444 555 и имеется...

5
2806 / 1676 / 884
Регистрация: 14.04.2015
Сообщений: 5,714
28.06.2019, 09:04 2
Кайд,
реализовано:
1) Мне надо вытащить в переменные именно последние цифры типа 123456 и добавить возможность суммировать их(якобы стоимость)
2) Нужно именно выбирать нужный товар...
я так больше не понял, что тебе надо. возможно еще дорабатывать, если есть еще пожелания.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
 
namespace ConsoleApp74
{
    class Program
    {
        public static List<Products> ListProducts = new List<Products>();
 
        static void Main(string[] args)
        {
            string FileName = @"input.txt";
 
            ListTxtFileInfo(FileName);
 
            double SummProducts = 0;
 
            Console.WriteLine($"Список цен: ");
 
            foreach (Products Product in ListProducts)
            {
                Console.WriteLine(Product.Cost);
 
                SummProducts += Product.Cost;
            }
            Console.WriteLine($"Общая цена: {SummProducts}");
 
            Console.WriteLine($"Список товаров: ");
 
            foreach (Products Product in ListProducts)
            {
                Console.WriteLine(Product.Name.Trim());
            }
 
            Console.WriteLine($"Выберите товар: ");
 
            string NameProduct = Console.ReadLine();
 
            var ProductFind = ListProducts.Where(w => w.Name.Trim() == NameProduct).Select(s => s).FirstOrDefault();
 
            Console.WriteLine($"Номер продукта: {ProductFind.Number}, Наименование: {ProductFind.Name}, Цена: {ProductFind.Cost}");
        }
        static List<Products> ListTxtFileInfo(string FileName)
        {
 
 
            Products ProductsInfo = new Products();
 
            string[] InputFile = File.ReadAllLines(FileName, Encoding.Default);
 
            for (int i = 0; i < InputFile.Length; i++)
            {
                var Data = InputFile[i].Trim().Split('-');
 
                ProductsInfo.Number = Data[0];
 
                ProductsInfo.Name = Data[1];
 
                ProductsInfo.Cost = Convert.ToDouble(Data[2]);
 
                ListProducts.Add(ProductsInfo);
            }
              
 
            return ListProducts;
        }
    }
    public struct Products
    {
        public string Number { get; set; }
 
        public string Name { get; set; }
 
        public double Cost { get; set; }
    }
}
1
0 / 0 / 0
Регистрация: 02.11.2017
Сообщений: 4
28.06.2019, 13:51  [ТС] 3
AndreyVorobey
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
Кайд,
реализовано:
Ну, немного не так как хотелось, еще надо разобраться в твоем коде.
Моя прога работает как:
Пуск-> открывается первый текстовый файл Store.txt где
1-Список товаров
2-Выход
на кнопку 1 у меня открывается текстовый файл Products.txt
где
Выберите товар:
1 - товар4 - 123456
2 - товар3 - 789123
3 - товар2 - 987654
4 - товар4 - 654123
И в самой задаче надо на кнопку там 1-2-3-4 якобы выбирать нужный товар для покупки, то есть, нажал 1 и 3, суммируются именно 1 и 3ьи товары. Сейчас попробую разобраться в вашем коде, но в любом случае спасибо.
Миниатюры
Нужно вытащить числа из строки в текстовом файле (в переменные)  
0
2806 / 1676 / 884
Регистрация: 14.04.2015
Сообщений: 5,714
28.06.2019, 15:28 4
Лучший ответ Сообщение было отмечено Кайд как решение

Решение

Кайд, не вопрос. вот:
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
 
namespace ConsoleApp74
{
    class Program
    {
        public static List<Products> ListProducts = new List<Products>();
 
        static void Main(string[] args)
        {
            string Menu = @"menu.txt";
 
            string FileName = @"input.txt";
 
            string[] MenuFile = File.ReadAllLines(Menu, Encoding.Default);
 
            Console.WriteLine("Меню: ");
            Console.WriteLine(String.Join("\r\n", MenuFile));
 
            Console.Write("Выберите пункт меню: ");            
            switch (int.Parse(Console.ReadLine()))
            {
                case 1:
                    ListTxtFileInfo(FileName);
 
                    Console.WriteLine("Список всех товаров: ");
 
                    ListProducts.ForEach(w => Console.WriteLine(w));
 
                    Console.WriteLine("Выберите товары, для вывода общей цены: ");
 
                    int[] NumbersProducts = Regex.Matches(Console.ReadLine(), "\\d+").Cast<Match>().Select(x => int.Parse(x.Value)).ToArray();
 
                    double SummProducts = 0;
 
                    foreach (int Number in NumbersProducts)
                    {
                        var SelectedProducts = ListProducts.Where(w => w.Number == Number).Select(s => s);
 
                        Console.WriteLine(String.Join("\r\n", SelectedProducts));
 
                        SummProducts += SelectedProducts.Sum(s => s.Cost);
                    }
                    Console.WriteLine("Общая цена выбранных товаров: ");
 
                    Console.WriteLine(String.Join(" ", SummProducts));
 
                    Console.ReadKey();
                    break;
                case 2:
                    Environment.Exit(-1);
                    break;
            }
        }
        static List<Products> ListTxtFileInfo(string FileName)
        {
            Products ProductsInfo = new Products();
 
            string[] InputFile = File.ReadAllLines(FileName, Encoding.Default);
 
            for (int i = 0; i < InputFile.Length; i++)
            {
                var Data = InputFile[i].Trim().Split('-');
 
                ProductsInfo.Number = Convert.ToInt32(Data[0]);
 
                ProductsInfo.Name = Data[1];
 
                ProductsInfo.Cost = Convert.ToDouble(Data[2]);
 
                ListProducts.Add(ProductsInfo);
            }
            return ListProducts;
        }
    }
    public struct Products
    {
        public int Number { get; set; }
 
        public string Name { get; set; }
 
        public double Cost { get; set; }
 
        public override string ToString()
        {
            return $"Номер товара: {Number.ToString().Trim()}, Наименование товара: {Name.Trim()}, Цена: {Cost.ToString().Trim()}";
        }
    }
}
Добавлено через 3 минуты
товары выбираются по номеру через пробел, после ввода всех необходимых товаров нажимаешь Enter, и тогда дальше выводятся выбранные товары, и сумма товаров

Добавлено через 1 минуту
копируй весь проект, потому что по коду еще правки вносил
1
0 / 0 / 0
Регистрация: 02.11.2017
Сообщений: 4
01.07.2019, 00:05  [ТС] 5
AndreyVorobey, спасибо большое, примерно все понял. Не могли бы пережевать немного, а то большинство этих функции я даже не знал ранее, то есть прокомментировать код?) Хочу просто максимально подробно понять
0
53 / 43 / 22
Регистрация: 29.05.2016
Сообщений: 214
01.07.2019, 02:33 6
Укажите строчки кода которые не понятны? Всё предельно прозрачно и нативно!!
0
01.07.2019, 02:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2019, 02:33
Помогаю со студенческими работами здесь

Запись в переменные значений, взятых из списка в текстовом файле
Есть txt файл с каким то списком, например: qwerty asdfg zxcvbn Сколько там строчек...

В текстовом файле,состоящем из целых чисел,разделённых одним пробелом или концом строки,все числа увеличить в 10 раз
В текстовом файле,состоящем из целых чисел,разделённых одним пробелом или концом строки,все числа...

Из строки вытащить переменные
Здравствует друзья! Столкнулся с задачкой... В файле txt в таком виде сидят переменные: &lt;?...

Нужно написать программу в которой нужно проверять условия в текстовом файле
Написать программу, которая считывает английский текст из файла и выводит его на экран, заменив...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru