cadena extraña. Índice de comportamiento

Escribí el siguiente fragmento para eliminar espacios excesivos en losas de texto

int index = text.IndexOf("  ");
while (index > 0)
{
    text = text.Replace("  ", " ");
    index = text.IndexOf("  ");
}

En general, esto funciona bien, aunque es bastante primitivo y posiblemente ineficiente.

Problema

Cuando el texto contiene "-" por alguna extraña razón, ¡indexOf devuelve una coincidencia! La función Reemplazar no elimina nada y luego se atasca en un bucle sin fin.

¿Alguna idea de lo que está pasando con el string.IndexOf?

Respuestas a la pregunta(1)

Su respuesta a la pregunta