Самая большая проблема в том, что вы должны знать Культуру, в которой пользователь вводит число. В противном случае вы столкнетесь с большими проблемами.
Небольшим примером является чтение вашего номера как английского или немецкого.
В английском языке NumberFormatInfo.CurrencyDecimalSeparator является точкой (.), А NumberFormatInfo.CurrencyGroupSeparator является запятой (,). На немецком языке все наоборот. Таким образом, вы можете начать гадать, если пользователь имеет в виду тысячу двести пятьдесят или один и четвертый доллар.
Может быть, вы можете запустить все доступные культуры и проверить, содержит ли пользовательский ввод NumberFormatInfo.CurrencySymbol , а затем попробовать данную культуру. Но, может быть, есть культуры, которые используют один и тот же символ, но разные разделители.
Таким образом, чтобы это действительно заработало, у вас есть только два варианта:
* Скажите своим пользователям, в каком культурном формате они должны ввести свои значения.
* Дайте пользователю возможность рассказать, какую культуру они решили сделать.
Список всех доступных культур можно получить по CultureInfo.GetCultures ()