Получить все, что находится между тегами - C#
Формулировка задачи:
Добрых времени суток. По адресу тык нужно вытянуть все что находится между тегом
Делаю это так:
Строка имеет вид:
Теперь из этой строки нужно получить подстроки и занести их в массив. Подстроки должны иметь вид:
Если физ. атака больше маг.атаки выводится физ.атака и наоборот.
С регулярками не очень дружу, вытянуть что-то простенькое из строки могу, а как быть тут не знаю.
P.S. А можно как то сразу с сайта спарсить необходимые мне подстроки не используя регулярки?
Листинг программы
- <div id="content"> </div>
Листинг программы
- public void getLink(string html)
- {
- HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
- doc.LoadHtml(html);
- string lk = doc.DocumentNode.SelectSingleNode("//*[@id='content']").InnerText;
- richTextBox1.Text = lk;
- }
Листинг программы
- Имя
- Грейд
- Физ.атака
- Маг атака
- скорость
- Меч новичка
- -
- 30
- 10
- 360
- Короткий меч
- ВА
- 40
- 10
- 360
- Длинный меч
- ВА
- 50
- 10
- 360
- Добротный меч
- ВА
- 60
- 10
- 360
- ......
Листинг программы
- "Имя" "Физ.атака" или "Маг.атака"
Решение задачи: «Получить все, что находится между тегами »
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- namespace ConsoleApplication96
- {
- class Weapon
- {
- public string Name { get; set; }
- public string Grade { get; set; }
- public int MAtk { get; set; }
- public int PAtk { get; set; }
- public int Speed { get; set; }
- }
- class Program
- {
- static void Main()
- {
- string text = File.ReadAllText("for.txt", Encoding.UTF8);
- var parse = Parse(text);
- foreach (Weapon weapon in parse)
- {
- Console.WriteLine("{0} {1} {2}", weapon.Name, weapon.Grade, Math.Max(weapon.PAtk, weapon.MAtk));
- }
- }
- private static IEnumerable<Weapon> Parse(string text)
- {
- var lines = text.Split(new[] {'\r','\n','\t'}, StringSplitOptions.RemoveEmptyEntries);
- for (int i = 0; i < lines.Length; )
- {
- while (string.IsNullOrWhiteSpace(lines[i]))
- {
- i++;
- if (i == lines.Length)
- yield break;
- }
- if (lines[i].Contains("Имя"))
- {
- i += 5;
- continue;
- }
- var weapon = new Weapon();
- weapon.Name = lines[i++].Replace(" ", "").Trim();
- weapon.Grade = lines[i++];
- weapon.PAtk = int.Parse(lines[i++]);
- weapon.MAtk = int.Parse(lines[i++]);
- weapon.Speed = int.Parse(lines[i++]);
- yield return weapon;
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д