Torna al Thread

case ValueDataType.Double: #region Double NumberFormatInfo localNumberFormatInfo = NumberFormatInfo.CurrentInfo; string currencyDecimalSeparator = localNumberFormatInfo.CurrencyDecimalSeparator; string currencyGroupSeparator = localNumberFormatInfo.CurrencyGroupSeparator; string regExpDouble = string.Empty; if (currencyGroupSeparator[0] == '\x00a0') currencyGroupSeparator = " "; //if (digits.HasValue) //{ StringBuilder sb = new StringBuilder(); sb.Append(@"^\s*([-\+])?(((\d+)\"); sb.Append(currencyGroupSeparator); sb.Append(@")*)(\d+)"); if (!digits.HasValue) sb.Append(@"(\" + currencyDecimalSeparator + @"(\d+))?"); else if (digits.Value > 0) sb.Append(@"(\" + currencyDecimalSeparator + @"(\d{1," + digits.Value.ToString() + "}))?"); sb.Append(@"?\s*$"); regExpDouble = sb.ToString(); //} //else //{ // string[] textArray1 = new string[5] // { // @"^\s*([-\+])?(((\d+)\", // currencyGroupSeparator, // @")*)(\d+)", // @"(\" + currencyDecimalSeparator + @"(\d*))?", // @"?\s*$" // }; // regExpDouble = string.Concat(textArray1); //} Match regMatch = Regex.Match(text, regExpDouble); if (regMatch.Success) { StringBuilder strBuilder = new StringBuilder(); strBuilder.Append(regMatch.Groups[1]); foreach (Capture regCapture in regMatch.Groups[4].Captures) strBuilder.Append(regCapture.Value); strBuilder.Append(regMatch.Groups[5]); if (!digits.HasValue || (digits.Value > 0)) { strBuilder.Append("."); strBuilder.Append(regMatch.Groups[7].Value); } value = decimal.Parse(strBuilder.ToString(), CultureInfo.InvariantCulture); } #endregion break; }
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5