C#如何正确读取并格式化输出所有已连接显示器的型号名称
问题原因
你之前的修改把逗号拼接逻辑放在了单字符遍历的内层循环中,导致每个ASCII字符转换后都被追加了逗号,才会出现单字符分隔的错误输出。你需要先把单个显示器的完整名称拼装完成,再对不同显示器的名称做逗号分隔处理。
修正后代码
// 先声明列表存储所有显示器的名称 List<string> monitorList = new List<string>(); var searcher = new ManagementObjectSearcher(@"root\wmi", "SELECT * FROM WmiMonitorID"); foreach (ManagementObject ufn in searcher.Get()) { string monitorModel = string.Empty; if (ufn["UserFriendlyName"] == null) { monitorModel = "No description"; } else { ushort[] ufnArray = (ushort[])ufn["UserFriendlyName"]; // 优先拼装完成单个显示器的完整名称 foreach (ushort ufnValue in ufnArray) { var ufnASCIIBytes = new byte[] { (byte)ufnValue }; monitorModel += Encoding.ASCII.GetString(ufnASCIIBytes); } // 清理WMI返回值默认带的末尾空字符 monitorModel = monitorModel.Trim('\0'); } // 将单个显示器名称存入集合 monitorList.Add(monitorModel); } // 用Join方法统一拼接分隔符,自动避免末尾多余逗号问题 string finalOutput = string.Join(", ", monitorList);
最终输出的finalOutput就是你期望的DELL P2419H, DELL P2418D格式。
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

