Ответ 1
Я бы создал регулярное выражение, соответствующее главной части числа. Отчасти это будет зависеть от того, будет ли вы всегда иметь десятичную точку, хотите ли вы разрешать запятые для разделителей тысяч, будет ли она всегда использовать .
как десятичную точку и т.д. Это может выглядеть примерно так:
^-?\d+(?:\.\d+)?
Затем сопоставьте это регулярное выражение с текстом, возьмите значение совпадения (если оно выполнено успешно) и используйте decimal.Parse
или double.Parse
для этого значения:
Regex regex = new Regex(@"^-?\d+(?:\.\d+)?");
Match match = regex.Match(text);
if (match.Success)
{
weight = decimal.Parse(match.Value, CultureInfo.InvariantCulture);
}
Обратите внимание, что для "естественных" значений, таких как масса, вам может быть лучше double
, чем decimal
. Последнее более подходит для "искусственных" значений, таких как валюта, которые, естественно, лучше всего выражаются в десятичной форме и имеют точные значения. Это зависит от того, что вы делаете, хотя.