You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用LINQ和C#拆分字符串并提取VID与PID?

使用LINQ和C#拆分字符串并提取VID/PID

没问题,我来帮你搞定这个问题!首先咱们先从基础的LINQ拆分字符串说起,再一步步到提取VID和PID的场景~

一、用LINQ拆分字符串

C#里的Split()方法可以先把字符串拆分成数组,再结合LINQ的Select、Where等方法做进一步处理,比如去除空格、过滤空元素:

string input = "apple, banana , orange, ";
// 按逗号拆分,去除每个元素的空格,过滤空字符串
var splitItems = input.Split(',')
                      .Select(item => item.Trim())
                      .Where(item => !string.IsNullOrWhiteSpace(item));

// 遍历输出结果
foreach (var item in splitItems)
{
    Console.WriteLine(item);
}

这段代码会输出:apple、banana、orange,自动处理了空格和末尾的空元素。

二、用LINQ提取VID和PID

通常VID/PID会出现在类似USB设备ID的字符串里(比如"USB\\VID_0483&PID_5750\\0000000001A1"),咱们可以通过LINQ一步步解析:

方法1:转为字典存储VID/PID

string deviceId = "USB\\VID_0483&PID_5750\\0000000001A1";

// 1. 按反斜杠拆分,找到包含VID和PID的片段
// 2. 按&拆分出VID和PID的键值对
// 3. 转为字典方便取值
var vidPidDict = deviceId.Split('\\')
                         .FirstOrDefault(part => part.Contains("VID_") && part.Contains("PID_"))
                         ?.Split('&')
                         .ToDictionary(
                             kv => kv.Split('_')[0], // 提取键:VID/PID
                             kv => kv.Split('_')[1]  // 提取值:对应的ID数字
                         );

// 安全取值并输出
if (vidPidDict != null)
{
    if (vidPidDict.TryGetValue("VID", out string vid))
        Console.WriteLine($"提取到VID:{vid}");
    if (vidPidDict.TryGetValue("PID", out string pid))
        Console.WriteLine($"提取到PID:{pid}");
}

方法2:直接提取为自定义对象(或匿名对象)

如果不想用字典,也可以直接提取为匿名对象:

string deviceId = "USB\\VID_0483&PID_5750\\0000000001A1";

var idInfo = deviceId.Split('\\')
                     .FirstOrDefault(part => part.Contains("VID_"))
                     ?.Split('&')
                     .Select(part =>
                     {
                         var parts = part.Split('_');
                         return new { Type = parts[0], Id = parts[1] };
                     });

// 遍历输出
foreach (var info in idInfo ?? Enumerable.Empty<object>())
{
    Console.WriteLine($"{info.Type}: {info.Id}");
}

注意事项

  • 一定要处理空引用:用FirstOrDefault()代替First(),再结合?.操作符,避免字符串格式不符合时抛出异常
  • 如果你的VID/PID字符串格式不同(比如是"VID=1234;PID=5678"),只需要调整拆分的分隔符(把'&'换成';','_'换成'=')即可

内容的提问来源于stack exchange,提问作者Joseph Cenk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:42:53