首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数字/货币格式

数字/货币格式
EN

Stack Overflow用户
提问于 2013-01-15 16:25:33
回答 3查看 155关注 0票数 0

我确实有像+000000027511,00.I这样的格式的保加利亚货币想要将这种格式转换为27511.00,我已经尝试过,并得到使用子字符串组合和正则表达式,有任何模式或正则表达式,以更简单的方式做它?

我尝试过的实现,

代码语言:javascript
复制
String currency= "+000000027511"; // "[1234]" String
String currencyFormatted=currency.substring(1);
System.out.println(currencyFormatted.replaceFirst("^0+(?!$)", ""));
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-15 16:38:49

如下所示:

代码语言:javascript
复制
String s = "+000000027511,00";
String r = s.replaceFirst("^\\+?0*", "");
r = r.replace(',', '.');
票数 1
EN

Stack Overflow用户

发布于 2013-01-15 16:47:52

使用Double.valueOf + DecimalFormat.format,或者DecimalFormat.parse + format,或者BigDecimal,你可以这样做。

代码语言:javascript
复制
  // 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());

将打印

代码语言:javascript
复制
27511.00
27511.00
27511.00
票数 2
EN

Stack Overflow用户

发布于 2013-01-15 16:44:33

试一试

代码语言:javascript
复制
    String s = "+000000027511,00";
    s = s.replace("+", "").replaceAll("^0+", "").replace(',', '.');
    System.out.println(s);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14333674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档