首页 > 解决方案 > 如何将一组值分配给字符串或 Int 值?

问题描述

我有 C# 的问题。我设法从网页中解析出材料的价格(带有材料和价格列表),但我不知道如何将单个值提取为单个字符串或整数。我已将“价格”分配给一个字符串,但该字符串包含一个值数组。

这是 C# 代码:

var products = htmlDocument.DocumentNode.Descendants("div")
                .Where(node => node.GetAttributeValue("id", "")
                .Equals("accordion1")).ToList();

            var productListItems = products[0].Descendants("tr")
                .Where(node => node.GetAttributeValue("data-name", "")
                .Contains("")).ToList();

            foreach (var productListItem in productListItems)
            {
                Console.WriteLine(productListItem.GetAttributeValue("data-name", ""));
                var tds = productListItem.Descendants("td").ToList();

                var name = tds[0].InnerText;
                var price = tds[1].InnerText.Trim('$');

                Console.WriteLine(name);
                Console.WriteLine(price);
            }

安慰:

clay_r
Lehm
199

coal_r
Kohle
427

copper_r
Kupfer
312

etc.

现在我想要,我可以用一根绳子调用单一材料(如粘土)。这样我对每个 materialPrice 都有一个 int。

就像是:

int clayPrice = int.Parse(the first price)
int coalPrice = int.Parse(the second price)
int copperPrice = int.Parse(the third price)

等等

我对 C# 很陌生,所以我不太了解它。我希望有人理解我的问题并可以帮助我。

标签: c#visual-studiohtml-agility-pack

解决方案


  1. 定义一个包含定价信息的单独类。例如:

    public class PriceInfo
    {
       public string Name {get; set;}
       public string RawPrice {get; set;}
       public int Price => int.Parse(RawPrice.Trim('$'));
    }
    
  2. 将 Dictionary 定义为类成员。字典

    Dictionary<string, PriceInfo> priceData = new Dictionary<string, PriceInfo>();
    
  3. 在您的循环中,将价格添加到字典中。

    foreach (var productListItem in productListItems)
    {
        Console.WriteLine(productListItem.GetAttributeValue("data-name", ""));
        var tds = productListItem.Descendants("td").ToList();
    
        var name = tds[0].InnerText;
        var price = tds[1].InnerText;
    
        // add to Dictionary
        priceData[name] = new PriceInfo
        {
          Name = name,
          RawPrice = price
        };
    }
    
  4. 使用值:

    priceData["somename"].Price
    

推荐阅读