Попробуйте это:
Решение регулярных выражений:
static Dictionary<string, string> GetProduct(string name, string html)
{
Dictionary<string, string> output = new Dictionary<string, string>();
string clfr = @"[\r\n]*[^\r\n]+";
string pattern = string.Format(@"href='([^']+)'>{0}</a>.*{1}{1}[\r\n]*([^\$][^\r\n]+)", name, clfr);
Match products = Regex.Match(html, pattern, RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);
if(products.Success) {
GroupCollection details = products.Groups;
output.Add("Name", name);
output.Add("Link", details[1].Value);
output.Add("Price", details[2].Value.Trim());
return output;
}
return output;
}
Тогда:
var ProductNames = new string[2] { "Jeans", "Bookbags" };
for (int i = 0, len = ProductNames.Length; i < len; i++)
{
var product = GetProduct(ProductNames[i], html);
if (product.Count != 0)
{
Console.WriteLine("{0} at price {1}", product["Name"], product["Price"]);
}
}
Выход:
Jeans at price $235.92
Bookbags at price $156.42
Примечание:
Значение Dictionary
не может быть int
, поскольку $235.92
/ $156.42
не является допустимым int
. чтобы преобразовать его в действительное значение int, вы можете удалить символ доллара и точки и использовать
int.Parse()