public static string GetHtml(Parser parser) { string document = parser.GetDocument(); StringBuilder html = new StringBuilder(); html.Append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\r\n"); html.Append("<html>\r\n<head>\r\n<title>Title</title>\r\n<link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\">\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\n"); if (!parser.GetSuccess()) { html.Append("<p>Errors occurred while parsing the document. Please correct these before trying to export.</p>\r\n"); } else { // Convert @pageref links to actual page numbers document = new Regex("@pageref\\((.+?)\\)").Replace(document, "<a href='#$1' class='pageref'>this link</a>"); // Center lines document = new Regex("^--\\s*(.*?)\\s*$", RegexOptions.Multiline).Replace(document, "<p style='text-align: center'>$1</p>"); // Convert lines to paragraphs (ignoring any figures, tables, or raw html) MatchCollection paragraphs = new Regex("(^([^@figure\\(|^@table\\(|^\n|^#|^\\$|^\\<].+?)\n)+", RegexOptions.Multiline).Matches(document); for (int i = paragraphs.Count - 1; i >= 0; i--) { Match m = paragraphs[i]; document = document.Remove(m.Index, m.Length); document = document.Insert(m.Index, "<p>\n" + m.Groups[0].Value.ToString().Substring(0, m.Groups[0].Value.Length - 1).Replace("\n", "<br>\n") + "\n</p>\n"); } // Convert lines only containing # to vertical padding paragraphs document = new Regex("^#\n", RegexOptions.Multiline).Replace(document, "<p><br></p>\n"); document = ProcessChapters(document, parser.GetChapters()); document = ProcessFigures(document, parser.GetFigures()); document = ProcessTables(document, parser.GetTables()); document = ProcessReferences(document, parser.GetReferences()); html.Append(document); } html.Append("</body></html>"); return html.ToString(); }
private static string GetDescription(string temp) { const string startMainDescrRegex = "\\<td .* class=\"mainDescription\"\\>"; const string allCharacteresRegex = "((.*(\n)*)*)"; const string endMainDescrRegex = "\\</td\\>"; //wycina tymczasowo cały od rozpoczęcia regexu var productMainDescrTemp = new Regex(startMainDescrRegex + allCharacteresRegex).Match(temp).Value; //wstępne porządki const string checkRegex = "table"; var checkRegexTemp = new Regex(checkRegex).Match(productMainDescrTemp); if (checkRegexTemp.Success) { const string cleanRegex = "\\<table.*\r\n\\s*.*\r\n\\s*.*\r\n\\s*.*\\</table\\>\\<br\\>"; productMainDescrTemp = new Regex(cleanRegex).Replace(productMainDescrTemp, ""); } //zwraca ile znaków zajmuje startMainDescrRegex //+ 2 - usunięcie \r\n z początku napisu var productMainDescrStartLocation = new Regex(startMainDescrRegex).Match(productMainDescrTemp).Length + 2; //zwraca początek </td> //- productmainDescrEndLocation - w substring podaje się ile znaków ma się wyciąć, a nie - końcowy indeks var productMainDescrEndLocation = new Regex(endMainDescrRegex).Match(productMainDescrTemp).Index - productMainDescrStartLocation; productMainDescrTemp = productMainDescrTemp.Substring(productMainDescrStartLocation, productMainDescrEndLocation); //porządki const string clearingChars = "'"; productMainDescrTemp = new Regex(clearingChars).Replace(productMainDescrTemp, ""); //porządki 2 const string clearRegex = "\\<br\\>\\<br\\>\\<br\\>"; var clearRegexTemp = new Regex(clearRegex).Match(productMainDescrTemp).Index; if (clearRegexTemp != 0) productMainDescrTemp = productMainDescrTemp.Remove(clearRegexTemp); //porządki 3 const string clearRegex2 = "\\<br\\>\\<br\\>\r\n\\s+\\<font"; var clearRegex2Temp = new Regex(clearRegex2).Match(productMainDescrTemp).Index; if (clearRegex2Temp != 0) productMainDescrTemp = productMainDescrTemp.Remove(clearRegex2Temp); //porządki 4 const string clearRegex3 = "\\<br\\>\r\n\\s*\\<br\\>\\<img src=\"http://www.*"; productMainDescrTemp = new Regex(clearRegex3).Replace(productMainDescrTemp, ""); //porządki 5 const string clearRegex4 = "\\<br\\>.*sklep@moto-akcesoria\\.pl.*\r\n\\s*.*"; productMainDescrTemp = new Regex(clearRegex4).Replace(productMainDescrTemp, ""); //porządki 6 const string clearRegex5 = "\\<br\\>\r\n\\s*" + clearRegex4; productMainDescrTemp = new Regex(clearRegex5).Replace(productMainDescrTemp, ""); return productMainDescrTemp; }
private void WeatherYandexRu() { try { var city = string.Empty; var sr = new StreamReader(LoadSetting); Line = sr.ReadLine(); sr.Close(); var users = new Users(); var list = users.Read(UsersPath); if (Line != "Гостем") { foreach (var t in list.Where(t => t.Login == Line)) { textBoxInput.Text = @"Вы зашли под," + t.Login; city = t.City; User = t.Login; break; } } else { textBoxInput.Text = @"Вы зашли под," + Line; User = Line; ExitFromAccount.Visible = false; textBoxCityVariable.Text = @"Grodno"; } var request = WebRequest.Create(@"https://pogoda.yandex.ru/" + city); using (var response = request.GetResponse()) { using (var stream = response.GetResponseStream()) if (stream != null) using (var reader = new StreamReader(stream)) { var data = reader.ReadToEnd(); var temp = new Regex( @"<div class=""current-weather__thermometer current-weather__thermometer_type_now"">(?<temp>([+][0-9]{1,2})|(-[0-9]{1,2})|[0]+)") .Match(data).Groups["temp"].Value; textBoxWeather.Text = temp + @" °C"; var temp1 = new Regex( @"<span class=""current-weather__comment"">(?<temp1>([а-я]+\s[а-я]+)|([а-я]+,\s[а-я]+)|([а-я]+))") .Match(data).Groups["temp1"].Value; textBoxWeaher1.Text = temp1.Substring(0, 1).ToUpper() + temp1.Remove(0, 1); if (city != string.Empty) { textBoxCityVariable.Text = city.Substring(0, 1).ToUpper() + city.Remove(0, 1); } else { city = @"Grodno"; textBoxCityVariable.Text = city.Substring(0, 1).ToUpper() + city.Remove(0, 1); } } } Log.Info("WeatherConnect"); } catch (Exception exception) { Log.Fatal(exception.Message); MessageBox.Show(exception.Message); } }