我需要能够将"1.000,"
字符串解析为值为1000
的BigDecimal
然后将同一个BigDecimal解析回"1.000,"
字符串。
两者都应该使用相同的DecimalFormat
格式化程序。
为什么?因为我需要在每个阶段结束时比较两个字符串是否相等,这意味着解析是否正确。
到目前为止,我尝试使用这两种模式:DecimalFormat("###.##0,")
和DecimalFormat("0,")
,但它们最终不会产生精确的“1.000”。
这是我的代码:
List<NumberFormat> formats = new ArrayList<NumberFormat>();
formats.add(DecimalFormat("###.##0,"));
formats.add(DecimalFormat("0,"));
for(NumberFormat format : formats) {
Number number = format.parse(text);
format.setParseIntegerOnly(false);
if (number != null && format(format, number).equals(text)) {
return true;
}
}
答案 0 :(得分:0)
我实际想出来了。 我不得不将模式定义为
DecimalFormat("###,##0.", new DecimalFormatSymbols(Locale.GERMAN))
和
DecimalFormat("0.", new DecimalFormatSymbols(Locale.GERMAN))
我必须将它添加到NumberFormat对象:
format.setParseIntegerOnly(false);
使其适用于欧盟号码。
答案 1 :(得分:-1)
也许你应该考虑使用Regex来解决你的问题。
你可以替换。并在最后添加000。
String str = "10,1";
str = str.replaceAll(",", ".");
System.out.println(str);
这将打印&#34; 10.1&#34;
编辑:
String str = "1.000,";
str = str.replaceAll(",", "");
str = str.replaceAll(".", "");
int bigDecimal = Integer.valueOf(str);
//first part is done
System.out.println(str);
String regex = "(\\d)(?=(\\d{3})+$)";
String result = bigDecimal.toString();
result = result.replaceAll(regex,".");
result = result + ",";
这是你在找什么?