2012-06-08 26 views
3

我面临着以下问题:从外部服务我得到它可以使用不同的语言环境进行格式化格式的数字数据:导出区域设置从格式化字符串

1.234,00 (de_DE) 
1,234.12 (en_US) 

什么是编程方式获取的最佳途径已用于格式化字符串的区域设置,以便我可以将值分析为其基本类型?

+0

我正在考虑使用所有当前可用的语言环境(可能预先排序)解析字符串的蛮力,但这似乎不太好... –

回答

1

避免抛出NumberFormatExceptions的一种可能性是使用正则表达式来检测语言环境。从你的例子:

String sDE = "1.234,00"; // (de_DE) 
String sEN = "1,234.12"; // (en_US) 

Pattern patternEN = Pattern.compile("[0-9],[0-9].[0-9]"); 
Pattern patternDE = Pattern.compile("[0-9].[0-9],[0-9]"); 

System.out.println(" DE - EN : " + patternEN.matcher(sDE).find()); 
System.out.println(" EN - EN : " + patternEN.matcher(sEN).find()); 
System.out.println(" DE - DE : " + patternDE.matcher(sDE).find()); 
System.out.println(" EN - DE : " + patternDE.matcher(sEN).find()); 

给出以下结果:

DE - EN : false 
EN - EN : true 
DE - DE : true 
EN - DE : false 

您可能需要优化正则表达式一个完全的工作环境。

+0

进入正确的方向,但我想要一些通用的东西,这样我也可以获得法语区域设置。或中国人。 –