Я прочитал «самый эффективный» как «самый быстрый».
Я написал быстрый тест с длинной строкой, выполненный 10 миллионов раз.
Решение Остина об использовании TrimEnd
побежал в4.649s
Мое решение работало за 1,927 секунды
int j = given.Length - 1;
for (; j >= 0; j--)
{
char c = given[j];
if (c < '0' || c > '9')
{
break;
}
}
var first = given.Substring(0, j + 1);
var rest = given.Substring(j + 1);
Обратите внимание, что мои сборки не были отлажены (в отладке мое решение работает медленнее, но это потому, что TrimEnd не работает в отладочных битах).Итак, если вы выполняете мой код в своем приложении и создаете отладку, это будет медленнее.