I have a string like “1.5%” and want to convert it to double value.
It can be done simple with following:
public static double FromPercentageString(this string value)
{
return double.Parse(value.SubString(0, value.Length - 1)) / 100;
}
but I don’t want to use this parsing approach.
Is any other approach with IFormatProvider or something like this?
If you care about catching formatting errors, I would use TrimEnd rather than Replace. Replace would allow formatting errors to pass undetected.
This will ensure that the value must be some decimal number followed by any number of spaces and percent signs, i.e, it must at least start with a value in the proper format. To be more precise you might want to split on ‘%’, not removing empty entries, then make sure that there are only two results and the second is empty. The first should be the value to convert.
Using Replace will allow you to successfully, and wrongfully IMO, parse things like:
in addtion to
1.5%