/// <summary>
        /// Gets a pattern string for formatting and parsing numbers according to the client's user preferences.
        /// </summary>
        /// <param name="options"></param>
        public void getNumberPattern(string options)
        {
            GlobalizationOptions globalOptions;

            try
            {
                string[] args = JSON.JsonHelper.Deserialize <string[]>(options);
                globalOptions = JSON.JsonHelper.Deserialize <GlobalizationOptions>(args[0]);
            }
            catch (Exception)
            {
                DispatchCommandResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
                return;
            }

            try
            {
                CultureInfo      cultureInfo      = CultureInfo.CurrentCulture;
                NumberFormatInfo formatInfo       = cultureInfo.NumberFormat;
                string           numberFormatType = (globalOptions.AdditionalOptions == null || string.IsNullOrEmpty(globalOptions.AdditionalOptions.Type)) ?
                                                    GlobalizationOptions.Decimal : globalOptions.AdditionalOptions.Type;
                NumberPattern pattern = null;
                string        symbol;

                // TODO find out how to get format pattern and the number of fraction digits
                switch (numberFormatType)
                {
                case GlobalizationOptions.Percent:
                {
                    symbol  = formatInfo.PercentSymbol;
                    pattern = new NumberPattern("", symbol, 0, formatInfo.PercentPositivePattern.ToString(), formatInfo.PercentNegativePattern.ToString(), 0, formatInfo.PercentDecimalSeparator, formatInfo.PercentGroupSeparator);
                    break;
                }

                case GlobalizationOptions.Currency:
                {
                    symbol  = formatInfo.CurrencySymbol;
                    pattern = new NumberPattern("", symbol, 0, formatInfo.CurrencyPositivePattern.ToString(), formatInfo.CurrencyNegativePattern.ToString(), 0, formatInfo.CurrencyDecimalSeparator, formatInfo.CurrencyGroupSeparator);
                    break;
                }

                default:
                {
                    symbol  = formatInfo.NumberDecimalSeparator;
                    pattern = new NumberPattern("", symbol, 0, "", formatInfo.NumberNegativePattern.ToString(), 0, formatInfo.NumberDecimalSeparator, formatInfo.NumberGroupSeparator);
                    break;
                }
                }

                this.DispatchCommandResult(new PluginResult(PluginResult.Status.OK, pattern));
            }
            catch (Exception)
            {
                this.DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR, new GlobalizationError(ErrorCode.PatternError)));
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 将字符串解析为整数。
 /// </summary>
 /// <param name="s">待解析的字符串。</param>
 /// <param name="dv">无法解析时的返回结果。</param>
 /// <returns></returns>
 public static int ToInt32(this string s, int dv = 0)
 {
     if (string.IsNullOrWhiteSpace(s))
     {
         return(dv);
     }
     else
     {
         s = NumberPattern.Replace(s.Trim(), "");
         int result;
         if (int.TryParse(s, out result))
         {
             return(result);
         }
         else
         {
             return(dv);
         }
     }
 }