使用LINQ将字符串拆分为多个字符串

时间:2015-05-08 14:33:42

标签: c# .net string linq string-split

我正在尝试拆分此字符串

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查询一次性从上面的字符串中提取值?

3 个答案:

答案 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()