Получить все, что находится между тегами - C# Формулировка задачи:
Добрых времени суток. По адресу тык нужно вытянуть все что находится между тегом <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
......
Теперь из этой строки нужно получить подстроки и занести их в массив. Подстроки должны иметь вид:
"Имя" "Физ.атака" или "Маг.атака"
Если физ. атака больше маг.атаки выводится физ.атака и наоборот.
С регулярками не очень дружу, вытянуть что-то простенькое из строки могу, а как быть тут не знаю.
P.S. А можно как то сразу с сайта спарсить необходимые мне подстроки не используя регулярки? Решение задачи: «Получить все, что находится между тегами »
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;
}
}
}
}
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д
Попробуйте бесплатно
Оцени полезность:
Похожие ответы
Формулировка задачи:
Добрых времени суток. По адресу тык нужно вытянуть все что находится между тегом Делаю это так:
Строка имеет вид:
Теперь из этой строки нужно получить подстроки и занести их в массив. Подстроки должны иметь вид:
Если физ. атака больше маг.атаки выводится физ.атака и наоборот.
С регулярками не очень дружу, вытянуть что-то простенькое из строки могу, а как быть тут не знаю.
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;
}
}
}
}
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д
Попробуйте бесплатно
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; } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д
Оцени полезность:
Похожие ответы