Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.08 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Text.Json;
  5. using System.Text.RegularExpressions;
  6.  
  7. namespace _10_14_2019_Expressoes_regulares2
  8. {
  9. class Program
  10. {
  11. static Dictionary<int, string> lerDescricaoLocais(string ficheiro)
  12. {
  13. //Defina Expressão Regular
  14. Regex g = new Regex(@"\d{7}(,\d\d?){3},[A-Z]{3},[^,\n]+");
  15. // "\s/Content/" : espaço seguido da pasta Dados
  16. // "([a-zA-Z0-9\-]+?) : agrupa alfanuméricos e "_"
  17. // ? : pára após macthing (lazily versus greedy).
  18. // \.pl : extensão ficheiro procurada
  19. // Processa conteúdo de ficheiro
  20. //
  21. Dictionary<int, string> diclocais = new Dictionary<int, string>();
  22. using (StreamReader r = new StreamReader(ficheiro))
  23. {
  24. string line;
  25. while ((line = r.ReadLine()) != null)
  26. {
  27. //Console.WriteLine(line);
  28. Match match = g.Match(line);
  29.  
  30. if (match.Success)
  31. {
  32. //Console.WriteLine(line);
  33. string[] campos = match.Value.Split(',');
  34. int codigo = int.Parse(campos[0]);
  35. string cidade = campos[5];
  36. // Registar nome da cidade na estrutura de dados
  37. diclocais.Add(codigo, cidade);
  38. }
  39. else
  40. {
  41. Console.WriteLine("nao reconhecida: " + line);
  42. }
  43. }
  44. }
  45. // listar todos os registos
  46. foreach (KeyValuePair<int, string> kv in diclocais)
  47. {
  48. //Console.WriteLine("codigo = {0} | cidade = {1}", kv.Key, kv.Value); /*mesma coisa*/
  49. Console.WriteLine($"codigo = {kv.Key} | cidade = {kv.Value}");
  50. }
  51.  
  52. /*Console.WriteLine($"cod = 1010500 cidade = {diclocais[1010500]}");
  53. Console.WriteLine("codigo da cidade: ");
  54. int cod = Convert.ToInt32(Console.ReadLine());
  55. Console.WriteLine($"cod = {cod} cidade = {diclocais[cod]}");*/
  56.  
  57. return diclocais;
  58. }
  59.  
  60. static Previsao LerPrevisao(string ficheiroPrevisao)
  61. {
  62. // ler o conteudo do ficheiro .json
  63. // ler o conteudo do documento
  64. StreamReader reader = new StreamReader(ficheiroPrevisao);
  65. string textoJson = reader.ReadToEnd();
  66.  
  67. // criar o objeto correspondente ao objeto json presente na lista
  68. Previsao previsao = JsonSerializer.Deserialize<Previsao>(textoJson);
  69. return previsao;
  70. }
  71.  
  72. static void Main(string[] args)
  73. {
  74. Dictionary<int, string> cidades = lerDescricaoLocais(@"C:\Users\Pedro\source\repos\10-14-2019-Expressoes_regulares2\10-14-2019-Expressoes_regulares2\locaisRegisto.csv");
  75. Previsao previsao_dia0 = LerPrevisao(@"C:\Users\Pedro\source\repos\10-14-2019-Expressoes_regulares2\10-14-2019-Expressoes_regulares2\previsao-dia0.json");
  76. //Console.WriteLine(previsao.ToString());
  77. //Datum[] data = previsao.data;
  78.  
  79.  
  80. Previsao previsao_dia1 = LerPrevisao(@"C:\Users\Pedro\source\repos\10-14-2019-Expressoes_regulares2\10-14-2019-Expressoes_regulares2\previsao-dia1.json");
  81. Previsao previsao_dia2 = LerPrevisao(@"C:\Users\Pedro\source\repos\10-14-2019-Expressoes_regulares2\10-14-2019-Expressoes_regulares2\previsao-dia2.json");
  82.  
  83. PrevisoesPorCidade previsoesPorCidade = new PrevisoesPorCidade();
  84. previsoesPorCidade.forecastDate = previsao_dia0.forecastDate;
  85. previsoesPorCidade.dataUpdate = previsao_dia0.dataUpdate;
  86. int nCidades = cidades.Count;
  87. foreach (Datum p in previsao_dia0.data)
  88. {
  89. //previsoesPorCidade.data = new PrevisaoCidade();
  90. PrevisaoCidade previsaoCidade = new PrevisaoCidade();
  91. previsaoCidade.globalIdLocal = p.globalIdLocal;
  92. if (cidades.ContainsKey(p.globalIdLocal))
  93. {
  94. //p.cidade = cidades[p.globalIdLocal];
  95. previsaoCidade.descLocal = cidades[p.globalIdLocal];
  96. }
  97. else
  98. {
  99. p.cidade = "desconhecida";
  100. }
  101. }
  102.  
  103.  
  104.  
  105. using (StreamWriter sw = new StreamWriter(@"C:\Users\Pedro\source\repos\10-14-2019-Expressoes_regulares2\10-14-2019-Expressoes_regulares2\NOVO-POR-CIDADE.json"))
  106. {
  107. JsonSerializerOptions opcoes = new JsonSerializerOptions()
  108. { WriteIndented = true };
  109. //string textoJson = JsonSerializer.Serialize<Previsao>(previsao_dia0, opcoes);
  110. string textoJson = JsonSerializer.Serialize<PrevisoesPorCidade>(previsoesPorCidade, opcoes);
  111. sw.Write(textoJson);
  112. }
  113. }
  114.  
  115. }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement