多元文化节目的有趣之处之一是数字格式.

  • 美国人使用10000.50美元
  • 德国人使用10.000,50
  • 法国使用10000,50

我的第一种方法是获取字符串,向后解析它,直到遇到分隔符,并将其用作小数分隔符.这有一个明显的缺陷:10.000会被解释为10.

另一种方法:如果字符串包含两个不同的非数字字符,则使用最后一个作为十进制分隔符,并丢弃其他字符.如果我只有一个,请判断它是否多次出现,如果出现,则丢弃它.如果只出现一次,请判断后面是否有3位数字.如果是,则丢弃它,否则,将其用作十进制分隔符.

显而易见的"最佳解决方案"是检测用户的文化或浏览器,但如果你有一个法国人使用的是en-US Windows/浏览器,这就行不通了.

是的.net框架包含一些神秘的黑魔法浮点解析器,它在try 自动检测数字格式时优于Double.(Try)Parse()

推荐答案

我认为在这种情况下,你能做的最好的事情就是听取他们的意见,然后向他们展示你认为他们的意思.如果他们不同意,向他们展示你期望的格式,并让他们再次输入.

Asp.net相关问答推荐

如何在编译时为我的 ASP.NET 项目中的每个控制器生成一个单独的 OpenAPI Swagger.json 文件?

无法翻译 LINQ

如何从 Azure 上托管的应用服务获取登录用户名?

RNGCryptoServiceProvider - 随机数审核

Webapi、Webhost和Owin的关系

如何使用 javascript 调用 ASP.NET c# 方法

在 asp.net 中调整图像大小而不会丢失图像质量

如何解决 Kerberos 双跳问题?

带有完整内存错误的 WCF 服务(内存门判断失败,因为可用内存) - 如何解决

MVC 4 - Razor - 将变量传递到 href url

将当前谷歌 map 保存为图片

如何验证 WebClient 请求?

具有自定义报告创建能力的最佳 ASP.NET 报告引擎

覆盖静态方法

使用 Twitter Bootstrap 在 @html.actionlink 中显示 html

ASP.NET MVC NonAction 含义

在 ASPNET 标识 2.0 中禁用用户

如何在服务器控件属性中使用 ASP.NET <%= 标签?

哪个事件先调用?母版页 Page_Load 或内容页 Page_Load

如何识别字符串是否包含 unicode 字符?