Как прочитать определённые значения из файла?
Нужно загрузить из файла определённые значения: сам файл состоит из этого содержимого:
-Авторизация-
=====================
Ваш Токен: 0x9998509998332111
Ваш Логин: Tester
Ваш Пароль: testpassword123
Но этот метод просто читает всё с начальной строчки
public static void Load(string path, params TextBox[] contents)
{
string result = Path.Combine(Dir, path);
using (var sr = new StreamReader(result, Encoding.UTF8))
{
string[] line = sr.ReadToEnd().Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);
contents[0].Text = line[0];
contents[1].Text = line[1];
contents[2].Text = line[2];
}
}
В каждый из текстбоксом нужно применить отдельные значения:
1 - 0x9998509998332111
2 - Tester
3 - testpassword123
Ответы (1 шт):
Автор решения: EvgeniyZ
→ Ссылка
Загружаем файл (или получаем эти данные от куда надо):
File.ReadAllLines("Test.txt")Берем из полученного массива строк только те, что содержат
::.Where(x => x.Contains(':'))Преобразуем в разбитый массив по указанному символу:
.Select(x => x.Split(':'))Формируем словарь:
.ToDictionary(k => k[0], v => v[1])
Весь код и пример использования:
var result = File.ReadAllLines("Test.txt")
.Where(x => x.Contains(':'))
.Select(x => x.Split(':'))
.ToDictionary(k => k[0], v => v[1]);
var pass = result["Ваш Пароль"]; // testpassword123
Если хотите убрать "Ваш", то либо разбивайте по пробелу, либо делайте такое:
private static string FormateKey(string value)
{
var values = new[] { "Токен", "Логин", "Пароль" };
return values.FirstOrDefault(x => value.Contains(x));
}
и
.ToDictionary(k => FormateKey(k[0]), v => v[1]);
Если словарь вовсе не нужен, то:
.Select(x => x.Split(':'))
.ToDictionary(k => FormateKey(k[0]), v => v[1]);
заменяем на
.Select(x => x.Split(':').Last());
Это даст вам массив лишь необходимых значений.