配置 .Net Core 3 Web API 以始终解析具有不变文化的数字

问题描述

我不知道标题是否有意义,但简而言之,我们需要解析作为字符串传递的双精度值。但我们无法控制数字的格式(例如句点与逗号小数分隔符)

因此,我们需要使用 Invariant Culture 和 Number Styles 解析某些文本字段,如下所示:

double.TryParse(ResponseObject.Ammount,NumberStyles.Any,CultureInfo.InvariantCulture,out double amt);

事实是,很难在任何地方强制使用这种重载方法。所以我希望你可以在 Startup.cs 中配置不变文化的使用,但我真的不知道该怎么做。

启动中的配置:

private void ConfigureLocalization(IServiceCollection services)
        {
            var jsonLocalizationOptions = Configuration.GetSection(nameof(JsonLocalizationOptions));

            _jsonLocalizationOptions = jsonLocalizationOptions.Get<JsonLocalizationOptions>();
            _defaultRequestCulture = new RequestCulture(_jsonLocalizationOptions.DefaultCulture,_jsonLocalizationOptions.DefaultUICulture);
            _supportedCultures = _jsonLocalizationOptions.SupportedCultureInfos.ToList();

            services.AddJsonLocalization(options =>
            {
                options.ResourcesPath = _jsonLocalizationOptions.ResourcesPath;
                options.UseBaseName = _jsonLocalizationOptions.UseBaseName;
                options.CacheDuration = _jsonLocalizationOptions.CacheDuration;
                options.SupportedCultureInfos = _jsonLocalizationOptions.SupportedCultureInfos;
                options.FileEncoding = _jsonLocalizationOptions.FileEncoding;
                options.IsAbsolutePath = _jsonLocalizationOptions.IsAbsolutePath;
            });
        }

(关于这个项目我不能多说,但我们只能说我们必须解析某些包含双精度的字符串等。我们在这里做的事情没有办法,只能直接通过)。

>

解决方法

所以无论如何,如果我们不能在启动时配置它,这就是解决方案。

    public static class ParseUtil
    {
        public static decimal ParseDecimal(string input)
        {
            return decimal.TryParse(input,NumberStyles.Any,CultureInfo.InvariantCulture,out decimal amt) ? amt : 0;
        }

        public static double ParseDouble(string input)
        {
            return double.TryParse(input,out double amt) ? amt : 0;
        }
    }

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...