public static bool TryParse()

in src/DotPulsar/MessageId.cs [164:212]


    public static bool TryParse(string s, out MessageId result)
    {
        result = Earliest;
        if (string.IsNullOrWhiteSpace(s))
            return false;
        var input = s.AsMemory();
        var startOfNextEntry = 0;
        var index = 0;
        var field = 0;
        ulong ledgerId = 0;
        ulong entryId = 0;
        int partition = 0;
        int batchIndex = 0;
        var topic = string.Empty;

        while (index <= s.Length)
        {
            if (index == s.Length || s[index] == ':')
            {
                var length = index - startOfNextEntry;
                if (length == 0)
                    return false;

                var value = input.Slice(startOfNextEntry, length);
                if (field == 0 && !TryParse(value.Span, out ledgerId))
                    return false;
                else if (field == 1 && !TryParse(value.Span, out entryId))
                    return false;
                else if (field == 2 && !TryParse(value.Span, out partition))
                    return false;
                else if (field == 3)
                {
                    if (!TryParse(value.Span, out batchIndex))
                        return false;
                    if (index + 1 < s.Length)
                        topic = s.Substring(index + 1);
                    break;
                }

                startOfNextEntry = index + 1;
                ++field;
            }

            ++index;
        }

        result = new MessageId(ledgerId, entryId, partition, batchIndex, topic);
        return true;
    }