我确实有像+000000027511,00.I这样的格式的保加利亚货币想要将这种格式转换为27511.00,我已经尝试过,并得到使用子字符串组合和正则表达式,有任何模式或正则表达式,以更简单的方式做它?
我尝试过的实现,
String currency= "+000000027511"; // "[1234]" String
String currencyFormatted=currency.substring(1);
System.out.println(currencyFormatted.replaceFirst("^0+(?!$)", ""));发布于 2013-01-15 16:38:49
如下所示:
String s = "+000000027511,00";
String r = s.replaceFirst("^\\+?0*", "");
r = r.replace(',', '.');发布于 2013-01-15 16:47:52
使用Double.valueOf + DecimalFormat.format,或者DecimalFormat.parse + format,或者BigDecimal,你可以这样做。
// method 1 (parsing to Float)
String s = "+000000027511,00".replace(",", ".");
Double f = Double.valueOf(s);
DecimalFormat df = new DecimalFormat("#########0.00");
String formatted = df.format(f);
System.out.println(formatted);
// method 2 (parsing using Decimal Format)
s = "+000000027511,00";
DecimalFormat df2 = new DecimalFormat("+#########0.00;-#########0.00");
Number n = df2.parse(s);
df = new DecimalFormat("#########0.00");
formatted = df.format(n);
System.out.println(formatted);
// method 3 (using BigDecimal)
BigDecimal b = new BigDecimal(s.replace(",", "."));
b.setScale(2, RoundingMode.HALF_UP);
System.out.println(b.toPlainString());将打印
27511.00
27511.00
27511.00发布于 2013-01-15 16:44:33
试一试
String s = "+000000027511,00";
s = s.replace("+", "").replaceAll("^0+", "").replace(',', '.');
System.out.println(s);https://stackoverflow.com/questions/14333674
复制相似问题