eskims
@eskims

Как правильно разделить строки?

Имеется код:
c# code
string[] data = File.ReadAllText(OFD.FileName).Split( ':' );
            for (int i = 0; i < data.Length - 1; i+=2)
            {
                logins.Add(data[i]);
                pass.Add(data[i+1]);

            }

И текстовый файл путь до которого в OFD.FileName содержит в себе строки в формате:
.txt
log:pass
log1:pass1


Так вот, при дальнейшем использовании этих данных оказывается так, что я не могу использовать адекватно строчку после ":", т.к выдаёт ошибку "Object reference not set to an instance of an object."

Можете подсказать в чём здесь ошибка?
  • Вопрос задан
  • 112 просмотров
Решения вопроса 2
vabka
@vabka Куратор тега C#
Токсичный шарпист
Сложно сказать, откуда берётся NRE, тк код хоть и страшный, но рабочий.
Ошибка может возникать, если OFD, OFD.FileName, logins или pass равен null.

Небольшой совет, как можно улучшить код:
1. Делаем отдельный тип для пары логин-пароль, и используем для этого один список
2. Читаем файл не целиком, а построчно.
var path = "...";
var lines = await File.ReadAllLinesAsync(path);
var allCredentials = lines.Select(Credentials.Parse).ToList();

public record Credentials(string Username, string Password) {
  public static Credentials Parse(string line) {
      var parts = line.Split(':');
      return new(parts[0], parts[1]);
  }
}
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
А поставить точку останова в начале цикла и посмотреть на ту кашу что оказалась в data - не позволяет религия?

hint: отделить мух от котлет - читать строки в массив и проходя по всем этим строкам разбивать их уже разделителем на логин и пароль.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы