如何使用linq和C#拆分字符串?

问题描述 投票:-2回答:3

我想使用Linq拆分并解析一个字符串。如何从此字符串中提取VID和PID?

HID\VID_0483&PID_5750\6&28E7587C&0&0000

到目前为止,这是我的代码:

var vendorId = UsbSetting.Instance.UsbDeviceInfo.PnpDeviceId.Split('\\').Select(s=> s.Split('&'));
c# .net linq
3个回答
0
投票

使用下面的解析 string s1 = @“HID \ VID_0483&PID_5750 \ 6&28E7587C&0&0000”;

var vendorId = UsbSetting.Instance.UsbDeviceInfo.PnpDeviceId.Split('\\', '&').
                        SingleOrDefault((s) => s.Contains(UsbInfo.Vid.Description()))?.
                        Replace(UsbInfo.Vid.Description()+"_", ""); 

var productId = UsbSetting.Instance.UsbDeviceInfo.PnpDeviceId.Split('\\', '&').
                        SingleOrDefault((s) => s.Contains(UsbInfo.Pid.Description()))?.
                        Replace(UsbInfo.Pid.Description() + "_", "");

0
投票

在这种情况下,正则表达式分组非常有用:

//group VID or PID followed by _ and 4 digits
string pattern = @"(\bVID|\bPID)_(\d{4})"; 
MatchCollection matches = Regex.Matches(input, pattern);
string vendorID = matches[0].Groups[2].Value;
string productID = matches[1].Groups[2].Value;

0
投票
string s1 = @"HID\VID_0483&PID_5750\6&28E7587C&0&0000";
var split = s1.Split('\\','&');
string vendorID = split[1];
string productID = split[2];
© www.soinside.com 2019 - 2024. All rights reserved.