小编JNA*_*JNA的帖子

使用 .Net 中的 Span<T> 将输入字符串中的 ID 解析为长数字

我正在尝试从包含不同数字的单个字符串中解析不同的 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)

.net c# memory parsing

0
推荐指数
1
解决办法
660
查看次数

标签 统计

.net ×1

c# ×1

memory ×1

parsing ×1