C#Regex.Split和正则表达式

Wil*_*oat 1 c# guid

我有字符串,我需要将它拆分两次并选择追求特殊字符的部分.

让我们说:

string myString = "Word 2010|82e146e7-bc85-4bd4-a691-23d55c686f4b;#Videos|55140947-00d0-4d75-9b5c-00d8d5ab8436";

string[] guids = Regex.Split(myString,";#");
Run Code Online (Sandbox Code Playgroud)

所以这里我得到了两个带有Value + GUID元素的数组.但我只需要Guids,例如:

[0] 82e146e7-bc85-4bd4-a691-23d55c686f4b

[1] 55140947-00d0-4d75-9b5c-00d8d5ab8436

有没有办法用一两行做?

Aus*_*nen 5

你可以做到这一点,但仅仅因为你可以在一行中做到并不意味着你应该(如果你在这里过于花哨,可读性就会发挥作用).这里显然没有任何验证.

string myString = "Word 2010|82e146e7-bc85-4bd4-a691-23d55c686f4b;#Videos|55140947-00d0-4d75-9b5c-00d8d5ab8436";

string[] guids = Regex.Split(myString, ";#")
                      .SelectMany(s => Regex.Split(s, @"\|").Skip(1))
                      .ToArray();

Assert.AreEqual(2, guids.Length);
Assert.AreEqual("82e146e7-bc85-4bd4-a691-23d55c686f4b", guids[0]);
Assert.AreEqual("55140947-00d0-4d75-9b5c-00d8d5ab8436", guids[1]);
Run Code Online (Sandbox Code Playgroud)