Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text.Json;
- using System.Text.RegularExpressions;
- namespace _10_14_2019_Expressoes_regulares2
- {
- class Program
- {
- static Dictionary<int, string> lerDescricaoLocais(string ficheiro)
- {
- //Defina Expressão Regular
- Regex g = new Regex(@"\d{7}(,\d\d?){3},[A-Z]{3},[^,\n]+");
- // "\s/Content/" : espaço seguido da pasta Dados
- // "([a-zA-Z0-9\-]+?) : agrupa alfanuméricos e "_"
- // ? : pára após macthing (lazily versus greedy).
- // \.pl : extensão ficheiro procurada
- // Processa conteúdo de ficheiro
- //
- Dictionary<int, string> diclocais = new Dictionary<int, string>();
- using (StreamReader r = new StreamReader(ficheiro))
- {
- string line;
- while ((line = r.ReadLine()) != null)
- {
- //Console.WriteLine(line);
- Match match = g.Match(line);
- if (match.Success)
- {
- //Console.WriteLine(line);
- string[] campos = match.Value.Split(',');
- int codigo = int.Parse(campos[0]);
- string cidade = campos[5];
- // Registar nome da cidade na estrutura de dados
- diclocais.Add(codigo, cidade);
- }
- else
- {
- Console.WriteLine("nao reconhecida: " + line);
- }
- }
- }
- // listar todos os registos
- foreach (KeyValuePair<int, string> kv in diclocais)
- {
- //Console.WriteLine("codigo = {0} | cidade = {1}", kv.Key, kv.Value); /*mesma coisa*/
- Console.WriteLine($"codigo = {kv.Key} | cidade = {kv.Value}");
- }
- /*Console.WriteLine($"cod = 1010500 cidade = {diclocais[1010500]}");
- Console.WriteLine("codigo da cidade: ");
- int cod = Convert.ToInt32(Console.ReadLine());
- Console.WriteLine($"cod = {cod} cidade = {diclocais[cod]}");*/
- return diclocais;
- }
- static Previsao LerPrevisao(string ficheiroPrevisao)
- {
- // ler o conteudo do ficheiro .json
- // ler o conteudo do documento
- StreamReader reader = new StreamReader(ficheiroPrevisao);
- string textoJson = reader.ReadToEnd();
- // criar o objeto correspondente ao objeto json presente na lista
- Previsao previsao = JsonSerializer.Deserialize<Previsao>(textoJson);
- return previsao;
- }
- static void Main(string[] args)
- {
- Dictionary<int, string> cidades = lerDescricaoLocais(@"C:\Users\Pedro\source\repos\10-14-2019-Expressoes_regulares2\10-14-2019-Expressoes_regulares2\locaisRegisto.csv");
- Previsao previsao_dia0 = LerPrevisao(@"C:\Users\Pedro\source\repos\10-14-2019-Expressoes_regulares2\10-14-2019-Expressoes_regulares2\previsao-dia0.json");
- //Console.WriteLine(previsao.ToString());
- //Datum[] data = previsao.data;
- Previsao previsao_dia1 = LerPrevisao(@"C:\Users\Pedro\source\repos\10-14-2019-Expressoes_regulares2\10-14-2019-Expressoes_regulares2\previsao-dia1.json");
- Previsao previsao_dia2 = LerPrevisao(@"C:\Users\Pedro\source\repos\10-14-2019-Expressoes_regulares2\10-14-2019-Expressoes_regulares2\previsao-dia2.json");
- PrevisoesPorCidade previsoesPorCidade = new PrevisoesPorCidade();
- previsoesPorCidade.forecastDate = previsao_dia0.forecastDate;
- previsoesPorCidade.dataUpdate = previsao_dia0.dataUpdate;
- int nCidades = cidades.Count;
- foreach (Datum p in previsao_dia0.data)
- {
- //previsoesPorCidade.data = new PrevisaoCidade();
- PrevisaoCidade previsaoCidade = new PrevisaoCidade();
- previsaoCidade.globalIdLocal = p.globalIdLocal;
- if (cidades.ContainsKey(p.globalIdLocal))
- {
- //p.cidade = cidades[p.globalIdLocal];
- previsaoCidade.descLocal = cidades[p.globalIdLocal];
- }
- else
- {
- p.cidade = "desconhecida";
- }
- }
- using (StreamWriter sw = new StreamWriter(@"C:\Users\Pedro\source\repos\10-14-2019-Expressoes_regulares2\10-14-2019-Expressoes_regulares2\NOVO-POR-CIDADE.json"))
- {
- JsonSerializerOptions opcoes = new JsonSerializerOptions()
- { WriteIndented = true };
- //string textoJson = JsonSerializer.Serialize<Previsao>(previsao_dia0, opcoes);
- string textoJson = JsonSerializer.Serialize<PrevisoesPorCidade>(previsoesPorCidade, opcoes);
- sw.Write(textoJson);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement