private const string PUNCHID_TEXT_KEY = "idmarca";
public static void Main()
string texto = "IdMarca: 661764970 Marca:25-05-2022 01:00:00 user:2437306 Hora-Server:25-05-2022";
Console.WriteLine(Mejorado(texto));
private static long Mejorado(string key)
int end = key.IndexOf(PUNCHID_TEXT_KEY) + PUNCHID_TEXT_KEY.Length + 1;
string nextValue = key.Substring(end);
int nextDotsIndex = nextValue.IndexOf(":");
long.TryParse(new string(nextValue.Trim().Where(c => (Char.IsDigit(c) || c == '.' || c == ',')).ToArray()), out long cleanPunchId);
string cleanedPunchIdText = new string(nextValue.Substring(0, nextDotsIndex).Trim().Where(c => (Char.IsDigit(c) || c == '.' || c == ',')).ToArray());
long.TryParse(cleanedPunchIdText, out long punchId);
private static long GetPunchId(string key)
string[] data = key.Split(':');
for (int i = 0; i < data.Length; i++)
if (data[i].Contains(PUNCHID_TEXT_KEY))
string[] data1 = data[i].Split(' ');
punchId = long.Parse(data1[0]);