• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

c# помощь с сортировкой данных

Lisenok

Green Team
02.04.2016
133
75
BIT
1
Всем доброго времени!
Имеется .тхт , в файле есть некая информация и выглядит она примерно так:
Login: Login1
Email: Email1
Email: Email2
Name: Name1
Так вот помимо нужной мне информации там есть другие строки, я смог сделать так ,чтобы вытягивать ,по наименованию "поля", нужную мне информацию в разные текстовые файлы. Но в этом файле может не быть допустим Email2 или Email1 либо может быть только логин,но "поля" все таки будут, но будут пустыми, вопрос в том как мне вытаскивать с этого файла логины содержащие под собой емейл( 1 или 2 без разницы) и имя, но если после логина нету допустим емейлов то не брать данный логин. То есть по сути у меня получается 3 файла, Логин тхт , Емейл тхт, Нэйм тхт, и количество строк там не совпадает, как понимаете логинов больше, а мне бы хотелось получить , в идеале, 1 текстовый файл с логин:емейл:нэйм.
Надеюсь написал понятно, постарался все расписать в мелочах.
Извиняюсь если где то что то сделал тяжелее для понимания чем оно есть:)
"Пишу" на с#.
 

Lisenok

Green Team
02.04.2016
133
75
BIT
1
Покажи код, как ты вытягиваешь по наименованию поля.
C#:
 if (myFile[index].Contains("Username"))
                {

                    string username = myFile[index].Substring(myFile[index + 1].IndexOf(':')).Trim(new Char[] { ':', ' ' });

                    string writePath = dir + "//" + "username.txt";
                    using (StreamWriter sw = new StreamWriter(writePath, true, System.Text.Encoding.Default))
                        if (username != "(null)")
                        {
                            await sw.WriteLineAsync(username);
                        }
                }
 

nks1ck

Green Team
02.11.2020
223
106
BIT
0
C#:
 if (myFile[index].Contains("Username"))
                {

                    string username = myFile[index].Substring(myFile[index + 1].IndexOf(':')).Trim(new Char[] { ':', ' ' });

                    string writePath = dir + "//" + "username.txt";
                    using (StreamWriter sw = new StreamWriter(writePath, true, System.Text.Encoding.Default))
                        if (username != "(null)")
                        {
                            await sw.WriteLineAsync(username);
                        }
                }
Если перевести строку и проверить != null не получилось?
 

Lisenok

Green Team
02.04.2016
133
75
BIT
1
Если перевести строку и проверить != null не получилось?
Не уловил сути вопроса, можно поподробнее?

Если ты имеешь ввиду как на такое отреагирует так сказать приложение, то с такой проблемой не сталкивался пока)
 

Lisenok

Green Team
02.04.2016
133
75
BIT
1
Ну, как я понял, ты проверяешь username на != null. Почему бы не попробовать проверять Email, если (username != Null) = true?
аа, там 3 таких конструкции для каждого нужного мне поля, и каждая записывает полученные данные в свой текстовый файл, каждое поле по отдельности могу получить.

Ну, как я понял, ты проверяешь username на != null. Почему бы не попробовать проверять Email, если (username != Null) = true?
Если я правильно понимаю то после проверки юзернэйм , проверять в той же инструкции емейл и т д?

Так вот я с помощью Contains ищу строку Username, далее вытаскиваю строку , привожу в нужный для меня вид и записываю это все в переменную username , там где идет проверка не пустая ли строка , идет запись в текстовый файл
 

nks1ck

Green Team
02.11.2020
223
106
BIT
0
аа, там 3 таких конструкции для каждого нужного мне поля, и каждая записывает полученные данные в свой текстовый файл, каждое поле по отдельности могу получить.
Попробуй вложить их.
Если я правильно понимаю то после проверки юзернэйм , проверять в той же инструкции емейл и т д?
Да
 

Lisenok

Green Team
02.04.2016
133
75
BIT
1
Попробуй вложить их.

Да
C#:
for (int index = 0; index < myFile.Length; index++)
            {
                if (myFile[index].Contains("Login"))
                {

                    login = myFile[index].Substring(myFile[index + 1].IndexOf(':')).Trim(new Char[] { ':', ' ' });
                    Console.WriteLine(login);

                    for (int index1 = 0; index1 < myFile.Length; index1++)
                    {
                        if (myFile[index].Contains("Username"))
                        {

                            username = myFile[index].Substring(myFile[index + 1].IndexOf(':')).Trim(new Char[] { ':', ' ' });
                            Console.WriteLine(username);

                            for (int index2 = 0; index2 < myFile.Length; index2++)
                            {
                                if (myFile[index].Contains("email"))
                                {

                                    email = myFile[index].Substring(myFile[index + 1].IndexOf(':')).Trim(new Char[] { ':', ' ' });
                                    Console.WriteLine(email);

                                    string writePath = dir + "//" + "all.txt";
                                    using (StreamWriter sw = new StreamWriter(writePath, true, System.Text.Encoding.Default))
                                        sw.WriteLineAsync(username + ":" + login + ":" + email + "/n");



                                }
                            }
                        }
                    }




                }

Выводиться только login, так же пробовал без for , тоже самое, до этого попробовал в разных циклах, все записалось в один файл, но так же присутствует проблема повторения и записи не всех данных. То есть ::Email и далее Login:Username:Email

C#:
if (login != null && username != null && email != null)
                    {
                        string writePath = dir + "//" + "all.txt";
                        using (StreamWriter sw = new StreamWriter(writePath, true, System.Text.Encoding.Default))
                            await sw.WriteLineAsync(login + ":" + username + ":" + email + "/n");
                    }

Вот с помощью этого я добился что не выводятся пустые строки, но я до сих пор не решил проблему, как мне отбросить логины без имени или почты
 

nks1ck

Green Team
02.11.2020
223
106
BIT
0
C#:
if (login != null && username != null && email != null)
                    {
                        string writePath = dir + "//" + "all.txt";
                        using (StreamWriter sw = new StreamWriter(writePath, true, System.Text.Encoding.Default))
                            await sw.WriteLineAsync(login + ":" + username + ":" + email + "/n");
                    }

Вот с помощью этого я добился что не выводятся пустые строки, но я до сих пор не решил проблему, как мне отбросить логины без имени или почты
Что-то я вообще лагаю сегодня попробую вместо "и" использовать "или". Я вообще поехал головой сегодня.
 

Lisenok

Green Team
02.04.2016
133
75
BIT
1
Что-то я вообще лагаю сегодня попробую вместо "и" использовать "или". Я вообще поехал головой сегодня.
или использую когда то опять получаются пустые строки) блин это вообще реально ли? Или это надо решать как то по другому.

Что-то я вообще лагаю сегодня попробую вместо "и" использовать "или". Я вообще поехал головой сегодня.
Я не понимаю почему не работает тобой предложенное решение, вроде логично изначально получать одну переменную логин и потом в этом же цикле пытаться получить все остальное.
 

nks1ck

Green Team
02.11.2020
223
106
BIT
0
Я не понимаю почему не работает тобой предложенное решение, вроде логично изначально получать одну переменную логин и потом в этом же цикле пытаться получить все остальное.
Щас мб вечером программисты проснутся, помогут. На StackOverflow задай этот же вопрос.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!