Skip to main content
 首页 » 编程设计

C# Regex.Split 和正则表达式

2024年01月22日28oomusou

我有字符串,我需要将它拆分两次并选择特殊字符后面的部分。

让我们说:

string myString = "Word 2010|82e146e7-bc85-4bd4-a691-23d55c686f4b;#Videos|55140947-00d0-4d75-9b5c-00d8d5ab8436"; 
 
string[] guids = Regex.Split(myString,";#"); 

所以在这里我得到了两个具有值 + GUID 的元素的数组。但我只需要 Guids,例如:

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

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

有什么方法可以在一行/两行中完成?

请您参考如下方法:

您可以做到这一点,但仅仅因为您可以在一行中做到这一点并不意味着您应该(如果您在这里太花哨,可读性就会发挥作用)。显然这里根本没有验证。

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]);