public static bool TryParseDouble([CanBeNull] string s, out double value) {
if (s == null) {
value = 0d;
return false;
}
if (double.TryParse(s, NumberStyles.Any, CultureInfo.InvariantCulture, out value)) {
return true;
}
if (_parseDouble == null) {
_parseDouble = new Regex(@"-? *\d+([\.,]\d*)?", RegexOptions.Compiled);
}
var match = _parseDouble.Match(s);
if (match.Success) {
return double.TryParse(match.Value.Replace(',', '.').Replace(" ", ""), NumberStyles.Any,
CultureInfo.InvariantCulture, out value);
}
value = 0.0;
return false;
}