将字符串拆分为GUID数组

gri*_*egs 10 c#

如果我有一个管道分隔列表,我可以将它们自动拆分为GUID数组吗?

所以

"GUID1 | GUID2"

然后Guid[] values = selectedValue.Split("|".ToCharArray());会很好.

Mic*_*tum 29

几乎:

Guid[] values = selectedValue.Split('|').Select(s => Guid.Parse(s)).ToArray();
Run Code Online (Sandbox Code Playgroud)

如果任何Guids无效,则会抛出FormatException.

如果你想忽略它们,你可以在评论中做到Jeremy所建议的:

"9FE027E0-CF95-492F-821C-3F2EC9472657|bla|D94DF6DB-85C1-4312-9702-FB03A731A2B1"
.Split('|')
.Where(g => { Guid temp; return Guid.TryParse(g, out temp); })
.Select(g => Guid.Parse(g))
.ToArray()
Run Code Online (Sandbox Code Playgroud)

也许这可以进一步优化(我们实际上是将每个数字解析两次)或者只是被忽略,因为97%的过早优化并不重要.

  • 也许是某种类型的`.(s => Guid.TryParse(s,out foo))`. (2认同)