Avatar ·

Cómo contar el número de ocurrencias de un carácter o subcadena en una cadena en C#?

¡Hola a todos! Soy un desarrollador C# principiante y me encontré con una tarea que parece simple, pero no puedo encontrar una solución elegante. Necesito contar cuántas veces un carácter específico (por ejemplo, 'a') aparece en una cadena. Intenté escribir un bucle manualmente, pero se ve engorroso. Aquí está mi código actual:
string text = "Hello, world! Hello, C#!";
char target = 'l';
int count = 0;
for (int i = 0; i < text.Length; i++)
{
    if (text[i] == target)
        count++;
}
Console.WriteLine(count); // Output 4
Esto funciona, pero creo que en C# debería haber una solución incorporada. Además, necesito contar no solo caracteres, sino también subcadenas completas. Por ejemplo, cuántas veces la palabra "Hello" aparece en la cadena "HelloHelloWorld". Si uso el mismo enfoque con un bucle, para subcadenas se vuelve muy complicado: necesito verificar coincidencias en múltiples índices. ¿Podrían indicarme si hay métodos listos en .NET para contar ocurrencias? Tal vez algo como