多元文化节目的有趣之处之一是数字格式.
- 美国人使用10000.50美元
- 德国人使用10.000,50
- 法国使用10000,50
我的第一种方法是获取字符串,向后解析它,直到遇到分隔符,并将其用作小数分隔符.这有一个明显的缺陷:10.000会被解释为10.
另一种方法:如果字符串包含两个不同的非数字字符,则使用最后一个作为十进制分隔符,并丢弃其他字符.如果我只有一个,请判断它是否多次出现,如果出现,则丢弃它.如果只出现一次,请判断后面是否有3位数字.如果是,则丢弃它,否则,将其用作十进制分隔符.
显而易见的"最佳解决方案"是检测用户的文化或浏览器,但如果你有一个法国人使用的是en-US Windows/浏览器,这就行不通了.
是的.net框架包含一些神秘的黑魔法浮点解析器,它在try 自动检测数字格式时优于Double.(Try)Parse()
?