Вы можете использовать CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator, как показано ниже:
string separatorDecimal = CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator;
string str1 = "2.5";
string str2 = "2,5";
str1 = str1.Replace(".", separatorDecimal).Replace(",", separatorDecimal);
str2 = str2.Replace(".", separatorDecimal).Replace(",", separatorDecimal);
var v1 = double.Parse(str1);
var v2 = double.Parse(str2);
Console.WriteLine(v1.ToString());
Console.WriteLine(v2.ToString());
Console.ReadKey();
На французском Windows показано:
2,5
2,5
Предполагается, что десятичный разделитель равен.или, и есть только один разделитель в строке без пробелов, без разделителя тысяч ... может быть улучшен в случае необходимости.
Например:
str = str.Replace(" ", "");
if ( str.Count(c => c == ',' || c == '.') != 1 )
throw new ArgumentException();