c# - 如何将一组值分配给字符串或 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# 很陌生,所以我不太了解它。我希望有人理解我的问题并可以帮助我。
解决方案
定义一个包含定价信息的单独类。例如:
public class PriceInfo { public string Name {get; set;} public string RawPrice {get; set;} public int Price => int.Parse(RawPrice.Trim('$')); }
将 Dictionary 定义为类成员。字典。
Dictionary<string, PriceInfo> priceData = new Dictionary<string, PriceInfo>();
在您的循环中,将价格添加到字典中。
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 }; }
使用值:
priceData["somename"].Price
推荐阅读
- delphi - 防止 Delphi 服务无响应
- mongodb - Mongo 语言环境变体含义
- google-analytics - 从 ga 迁移到 gtag.js 脚本
- delphi - 重温:TClientDataset“缺少数据提供者或数据包”
- django-rest-framework - 来自 View 的库请求的 Django Rest Framework 返回响应
- apache-kafka - Apache Kafka 和 GCP PubSub 有什么区别?
- python - peewee 库,排序组合
- php - 它只是从 textarea 中插入最后一个值
- reactjs - Elements 上不支持的道具更改:设置后您无法更改“条纹”道具
- c# - 如何使用反射来动态调用类型?