我正在尝试从包含不同数字的单个字符串中解析不同的 ID(长),并且我需要最大限度地减少内存分配以提高性能。
下面是使用 Split 提取 ID 的代码,但我发现我可以使用 AsSpan 和 Splice 来执行相同的操作,而无需分配内存。但不幸的是,即使在网上查找后,我对这个 Span 概念也不太熟悉。谁能告诉我如何实现这一目标?
如下所示,输入字符串有 3 个不同的 ID,但我只需要其中 2 个并解析为长类型。
string[] machineIdPart;
string[] employeeIdPart;
long machineId;
long employeeId;
//Input String
var description = "machineId: 276744, engineId: 59440, employeeId: 4619825";
Console.Out.Write(description);
Console.Out.WriteLine();
var infoList = description.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var info in infoList)
{
if (info.TrimStart().StartsWith("machineId", StringComparison.OrdinalIgnoreCase))
{
machineIdPart = info.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
if (machineIdPart.Count() > 1)
{
long.TryParse(machineIdPart[1].Trim(), out machineId);
}
}
if (info.TrimStart().StartsWith("employeeId", StringComparison.OrdinalIgnoreCase)) …Run Code Online (Sandbox Code Playgroud)