我正在尝试拆分此字符串
string s = "sn DC0000002; mac 00:0c; uuid 564d6ae4-979";
我需要从上面的字符串中获取这些值" DC0000002 " ," 00:0c " ," 564d6ae4-979 "
为此,我尝试了下面的查询,但无法获得最后两个值,我的意思是这两个值(" 00:0c "," 564d6ae4-979 &#34)
以下是拆分
的查询List<string> decryptedList = new List<string>();
decryptedList = decodePP.Split(';').Select(x => x.Split(' ')[1]).ToList();
orgSNo = decryptedList[0]; //Output - DC0000002
orgMacID = decryptedList[1];// output - mac // this is wrong need to get value
orgUUID = decryptedList[2]; //output - uuid // this is also wrong
有人请求帮助解决这个查询如何使用LINQ查询一次性从上面的字符串中提取值?
答案 0 :(得分:5)
修剪首次拆分后得到的子串:
decodePP.Split(';').Select(x => x.Trim().Split(' ')[1]).ToList();
你得到的结果不正确,因为第一次分割会给你
[ "sn DC0000002", " mac 00:0c", " uuid 564d6ae4-979" ]
如您所见,除了第一项之外的项目都有前导空格。
替代解决方案 - 您可以使用StringSplitOptions.RemoveEmptyEntries
参数跳过空子串
str.Split(';')
.Select(x => x.Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries)[1])
.ToList()
答案 1 :(得分:0)
为什么需要使用Linq。字符串拆分似乎可以解决问题吗?
string[] keyValuePairs = s.Split(';');
foreach(string pair.Trim() in keyValuePairs)
{
string key = pair.Split(' ')[0].Trim();
string value = pair.Split(' ')[1].Trim();
}
这只是对代码的抨击 - 它可能无法编译,但你明白了吗?
答案 2 :(得分:0)
您可以在linq语句中使用TrimStart()函数,如:
autodiscover()