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

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

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

    Скидки до 10%

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

Считывание строк посимвольно

  • Автор темы Escaper
  • Дата начала
E

Escaper

язык C#

есть txt в котором строки:
Код:
========
login:pass
login:pass
========

и есть многомерный массив array[,] [12,2]

как мне считать с строки первые 5 символов в 1 ячейку, а pass в другую?
Спасибо)
 
C

cir

Я бы делал так.

Код:
// считываешь строку
string str = Console.ReadLine();
// разделяешь ее на подстроки, где разделитель: двоеточие
string[] strMas = str.Split(':');
Console.WriteLine("login:" + strMas[0]);
Console.WriteLine("pass:" + strMas[1]);

5a9687ed7ee5.png
 
  • Нравится
Реакции: Сергей Попов
E

Escaper

Я бы делал так.

Код:
// считываешь строку
string str = Console.ReadLine();
// разделяешь ее на подстроки, где разделитель: двоеточие
string[] strMas = str.Split(':');
Console.WriteLine("login:" + strMas[0]);
Console.WriteLine("pass:" + strMas[1]);

5a9687ed7ee5.png
Нужно именно что бы парали логин и пароль были.
например знаю точное кол-во символов в любом логине - 9, дальше десятый символ ":" и пароль 6 символов.
И дальше что бы с массивом было легче работать думаю через массив [,].
Как бы мне такое организовать?
 
C

cir

Нужно именно что бы парали логин и пароль были.
например знаю точное кол-во символов в любом логине - 9, дальше десятый символ ":" и пароль 6 символов.
И дальше что бы с массивом было легче работать думаю через массив [,].
Как бы мне такое организовать?

Так именно для этого вышеприведенный код.
Просто ответил на поставленный вопрос
как мне считать с строки первые 5 символов в 1 ячейку, а pass в другую?
.
Далее логин и пароль можно в массив, можно на экран и что еще заблагорассудится.


Код:
            string[,] mas = new string[3, 2];
            string[] strMas;
            for (int i = 0; i < 3; i++)
            {
                strMas = Console.ReadLine().Split(':');
                mas[i, 0] = strMas[0];
                mas[i, 1] = strMas[1];
            }
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine("login:" + mas[i, 0]);
                Console.WriteLine("pass:" + mas[i, 1]);
            }
2a310fb48d90.png
 

SooLFaa

Platinum
15.07.2016
898
1 559
BIT
19
Нужно именно что бы пароли логин и пароль были.
например знаю точное кол-во символов в любом логине - 9, дальше десятый символ ":" и пароль 6 символов.
И дальше что бы с массивом было легче работать думаю через массив [,].
Как бы мне такое организовать?
Не хорошее решение. Массивы статический тип данных. Почему бы не положить сие в List<KeyPair>?
Преимущества: удобный поиск, удобная структура и простота заполнения из файла.
Пример:
Дано
upload_2016-12-11_21-15-7.png


Код
Код:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;

namespace Keys
{
    public class Program
    {
        public static void Main(string[] args)
        {
            using (StreamReader reader = new StreamReader(@"C:\1.txt"))
            {
                ICollection<KeyValuePair<string, string>> results = new List<KeyValuePair < string, string>> ();
                string[] lines = reader.ReadToEnd().Split('\n');

                foreach (string line in lines)
                {
                    string[] pair = line.Split(':');
                    results.Add(new KeyValuePair<string, string>(pair[0], pair[1]));
                }

                // В итоге мы получаем все радости Linq в удобно формате
                // Например выведем отдельно все логины которые начинаются на букву A
                var allLoginsStartWithA = results.Where(x => x.Key.StartsWith("a")).Select(x => x.Key).ToList();

                Console.WriteLine(String.Join("\n", allLoginsStartWithA));
                Console.ReadKey();
            }
        }
    }
}

И больше не надо бегать по массивам и следить за границами.
 
  • Нравится
Реакции: <~DarkNode~>
E

Escaper

Не хорошее решение. Массивы статический тип данных. Почему бы не положить сие в List<KeyPair>?
Преимущества: удобный поиск, удобная структура и простота заполнения из файла.
Пример:
Дано
Посмотреть вложение 7911

Код
Код:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;

namespace Keys
{
    public class Program
    {
        public static void Main(string[] args)
        {
            using (StreamReader reader = new StreamReader(@"C:\1.txt"))
            {
                ICollection<KeyValuePair<string, string>> results = new List<KeyValuePair < string, string>> ();
                string[] lines = reader.ReadToEnd().Split('\n');

                foreach (string line in lines)
                {
                    string[] pair = line.Split(':');
                    results.Add(new KeyValuePair<string, string>(pair[0], pair[1]));
                }

                // В итоге мы получаем все радости Linq в удобно формате
                // Например выведем отдельно все логины которые начинаются на букву A
                var allLoginsStartWithA = results.Where(x => x.Key.StartsWith("a")).Select(x => x.Key).ToList();

                Console.WriteLine(String.Join("\n", allLoginsStartWithA));
                Console.ReadKey();
            }
        }
    }
}

И больше не надо бегать по массивам и следить за границами.

Извините но у меня бьет ошибку.

Ошибка CS0103 The name 'reader' does not exist in the current context

Мой код:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;


namespace ConsoleApplication16
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] array = new string[1231];
            using (StreamReader reader = new StreamReader("E:/Work/Checker/ss.txt"));
            {
                {
                    ICollection<KeyValuePair<string, string>> results = new List<KeyValuePair<string, string>>();
                    string[] lines = reader.ReadToEnd().Split('\n');

                    foreach (string line in lines)
                    {
                        string[] pair = line.Split(':');
                        results.Add(new KeyValuePair<string, string>(pair[0], pair[1]));
                    }

                    // В итоге мы получаем все радости Linq в удобно формате
                    // Например выведем отдельно все логины которые начинаются на букву A
                    var allLoginsStartWithA = results.Where(x => x.Key.StartsWith("a")).Select(x => x.Key).ToList();

                    Console.WriteLine(String.Join("\n", allLoginsStartWithA));
                    Console.ReadKey();
                }
            }
        }
    }
}
 

SooLFaa

Platinum
15.07.2016
898
1 559
BIT
19
Извините но у меня бьет ошибку.

Ошибка CS0103 The name 'reader' does not exist in the current context

Мой код:
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;


namespace ConsoleApplication16
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] array = new string[1231];
            using (StreamReader reader = new StreamReader("E:/Work/Checker/ss.txt"));
            {
                {
                    ICollection<KeyValuePair<string, string>> results = new List<KeyValuePair<string, string>>();
                    string[] lines = reader.ReadToEnd().Split('\n');

                    foreach (string line in lines)
                    {
                        string[] pair = line.Split(':');
                        results.Add(new KeyValuePair<string, string>(pair[0], pair[1]));
                    }

                    // В итоге мы получаем все радости Linq в удобно формате
                    // Например выведем отдельно все логины которые начинаются на букву A
                    var allLoginsStartWithA = results.Where(x => x.Key.StartsWith("a")).Select(x => x.Key).ToList();

                    Console.WriteLine(String.Join("\n", allLoginsStartWithA));
                    Console.ReadKey();
                }
            }
        }
    }
}
После using не нужная ; вы закрыли блок using, и поэтому объект reader уничтожили сразу как объявили
 
Мы в соцсетях:

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