Steam库存解析:如何用哈希集关键字过滤指定物品
Steam库存物品过滤问题修复
你的问题出在过滤逻辑的匹配方式上:原代码用oybek.Contains(s)判断物品名称是否完全等于哈希集中的关键字,但实际目标物品(比如2017 Service Medal、Gold Operation Shattered Web Coin)是名称包含这些关键字,而非完全一致,所以只有完全匹配的Loyalty Badge被过滤了。
修改过滤逻辑,改为检查物品名称是否包含哈希集中的任意一个关键字,只要包含就排除:
// 替换原过滤代码 var ms = list.Where(itemName => !oybek.Any(keyword => itemName.Contains(keyword))).ToList(); foreach(var item in ms) { Console.WriteLine(item); }
额外优化建议
可以直接在解析JSON阶段完成过滤,省去中间的list存储步骤,提升效率:
string path = @"C:\Users\Oybek\source\repos\ConsoleApp8\myfile.txt"; string text; using (StreamReader reader = new(path)) { text = await reader.ReadToEndAsync(); } var obj = JsonConvert.DeserializeObject<JObject>(text); var descriptions = obj!["descriptions"]!.ToList(); Console.OutputEncoding = Encoding.UTF8; // 直接过滤并输出 foreach (var item in descriptions) { var marketName = item["market_hash_name"]!.ToString(); if (!oybek.Any(keyword => marketName.Contains(keyword))) { Console.WriteLine(marketName); } }
内容的提问来源于stack exchange,提问作者robben_55
相关产品推荐
相关产品推荐

