【发布时间】:2012-11-05 21:57:21
【问题描述】:
我正在编写一个程序,需要解析一些第三方软件生成的一堆文本文件。其中一些文件将在法国生成,其中“1,5”之类的意思是“一个半”。其他文件将在美国生成,其中“1,5”不是数字,“一个半”是“1.5”。当然,“1,234.5”在美国是合法的数字。
这些只是示例;实际上,我的程序需要处理各种语言环境中的各种数字;它需要处理诸如“e-5”和“2e10”之类的事情。不幸的是,没有办法提前知道哪个文件来自哪个语言环境。
在 C# 中是否有一些普遍接受的解决方案来解决这个问题?我意识到我可以编写自己的数字解析代码,但我宁愿避免它,除非没有其他办法......
【问题讨论】:
-
试错?!你可以看看你想到哪里的问题,并使用
double.TryParse行(等)。然后您(希望)知道它是哪种文化,您可以开始使用正确的文化解析该文件。 -
如果您不知道字符串的格式,您将无法正确解释它。您将如何确定您自己的数字解析代码中的格式?
-
没有任何限制,你能做的最好的就是一堆启发式方法——这将是非常手动的。
-
如何使用可能的语言环境列表来遍历并用于
TryParseing? -
如果在任何地方都使用相同的第三方软件,请与供应商讨论是否需要具有全球一致的导出格式。这就是支持合同的用途。
标签: c# parsing internationalization double