Спарсить часть значений - C#
Формулировка задачи:
Доброго времени суток!
Уважаемые участники и гости форума! Помогите пожалуйста новичку разобраться в возникшей ситуации.
Допустим есть сайт, его исходный код такого вида:
Собственно вопрос: как мне получить в переменную только тир первых значения вида "CJFA-X3AK-RK7P" т.е.
1) CDMF-XRE2-XE7F
2) AMAU-XE7F-XE7F
3) CJFA-X3AK-RK7P
С дальнейшим выводом на лейбл?
Пробовал так:
Но тут проблема в том что выводятся все шесть значений...
<tr> <td colspan="2">CDMF-XRE2-XE7F</td> </tr> <tr> <td colspan="2">AMAU-XE7F-XE7F</td> </tr> <tr> <td colspan="2">CJFA-X3AK-RK7P</td> </tr> <tr> <td colspan="2">CDMF-XRE2-XE7F</td> </tr> <tr> <td colspan="2">AMAU-XE7F-XE7F</td> </tr> <tr> <td colspan="2">CJFA-X3AK-RK7P</td> </tr>
var page = VkRequest.Request("http://example.ru/").Content; var matches = Regex.Matches(page, @"[A-Z0-9]{1,4}\-[A-Z0-9]{1,4}\-[A-Z0-9]{1,4}"); string result = ""; foreach (Match m in matches) result = result + m + "\r\n";
Решение задачи: «Спарсить часть значений»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Windows.Forms; using HtmlDocument = HtmlAgilityPack.HtmlDocument; namespace ConsoleApplication2 { internal class Program { private static void Main(string[] args) { var code = @"<tr> <td>example</td> <td>example</td> </tr> <tr> <td>example</td> <td>example</td> </tr> <tr> <td colspan=""2""><strong>example example exampleexample example</strong></td> </tr> <tr> <td colspan=""2"">HO9J-FRH5-LRBN</td> </tr> <tr> <td colspan=""2"">HO9J-FRH5-LRBN</td> </tr> <tr> <td colspan=""2"">HO9J-FRH5-LRBN</td> </tr> <tr> <td colspan=""2"">HO9J-FRH5-LRBN</td> </tr> <td colspan=""2"">RRRR-FRH5-LRBN</td> </tr> <td colspan=""2"">RRRR-FRH5-LRBN</td> </tr> <td colspan=""2"">RRRR-FRH5-LRBN</td> </tr>"; var doc = new HtmlDocument(); doc.LoadHtml(code); var form = new Form(); form.Controls.Add(new Label { Text = string.Join(Environment.NewLine, doc.DocumentNode.SelectNodes("//td") .Select(n => n.InnerHtml) .Where(n => n.Contains("-")) .TakeLast(3)), AutoSize = true }); Application.Run(form); } } } internal static class Ex { public static IEnumerable<TSource> TakeLast<TSource>(this IEnumerable<TSource> source, int count) { if (source == null) throw new ArgumentNullException(nameof(source)); return TakeLastImpl(source, count); } private static IEnumerable<T> TakeLastImpl<T>(IEnumerable<T> source, int count) { Debug.Assert(source != null); if (count <= 0) yield break; var q = new Queue<T>(count); foreach (var item in source) { if (q.Count == count) q.Dequeue(); q.Enqueue(item); } foreach (var item in q) yield return item; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д