A have a string like this:
string s = @"
<tr>
<td>11</td><td>12</td>
</tr>
<tr>
<td>21</td><td>22</td>
</tr>
<tr>
<td>31</td><td>32</td>
</tr>";
How to create Dictionary<int, int> d = new Dictionary<int, int>();
from string s
to get same result as :
d.Add(11, 12);
d.Add(21, 22);
d.Add(31, 32);
You should use the HTML Agility Pack.
For example: (Tested)
var doc = new HtmlDocument();
doc.LoadHtml(s);
var dict = doc.DocumentNode.Descendants("tr")
.ToDictionary(
tr => int.Parse(tr.Descendants("td").First().InnerText),
tr => int.Parse(tr.Descendants("td").Last().InnerText)
);
If the HTML will always be well-formed, you can use LINQ-to-XML; the code would be almost identical.
Code
using RE=System.Text.RegularExpressions;
....
public void Run()
{
string s=@"
<tr>
<td>11</td><td>12</td>
</tr>
<tr>
<td>21</td><td>22</td>
</tr>
<tr>
<td>31</td><td>32</td>
</tr>";
var mcol= RE.Regex.Matches(s,"<td>(\\d+)</td><td>(\\d+)</td>");
var d = new Dictionary<int, int>();
foreach(RE.Match match in mcol)
d.Add(Int32.Parse(match.Groups[1].Value),
Int32.Parse(match.Groups[2].Value));
foreach (var key in d.Keys)
System.Console.WriteLine(" {0}={1}", key, d[key]);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With