من تابع را به این شکل تغییر دادم.
در مقدار پاس داده شده به این تابع برای جدا کننده اعشار می توانید از "." , "/" , "," و کاراکتر تعیین شده در تنظیمات ویندوز استفاده کنید. در صورتی که مقدار وارد شده اعشار نداشته باشد، تابع مقدار معادل آن را بر می گرداند.
این بار تست کردم ;)
private float StringToFloat(string floatString)
{
string separator = CultureInfo.CurrentCulture.NumberFormat.NumberDeci malSeparator;
Regex r = new Regex(@"(?<I>\d+)[\" + separator + @"\,\/\.](?<F>\d+)");
/* (1) (2) (3)
* 1: numeric charachter, one or more. this is a group with name "I"
* 2: any of "system decimal separator" or "," or "/" or "." charachters
* 3: numeric charachter, one or more. this is a group with name "F"
*
* total of this pattern is a float number in string variable
*/
if (r.IsMatch(floatString)) /* is match with our pattern ?? */
{
Match m = r.Match(floatString);
return float.Parse(m.Groups["I"] + separator + m.Groups["F"]);
}
else /* try to parse in normal mode; maybe an int ! */
return float.Parse(floatString);
}
ضمناً : using های زیر را نیز درج کنید:
using System.Globalization;
using System.Text.RegularExpressions;