/// <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))); } }
/// <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); } } }