2013-01-15 270 views
0

我有保加利亞貨幣像+000000027511,00。我的格式要將此格式轉換爲27511.00,我已經嘗試過了,並使用子組合和正則表達式得到的,是否有任何模式或正則表達式做更多簡化的方式?數/貨幣格式

實現我試過,

String currency= "+000000027511"; // "[1234]" String 
String currencyFormatted=currency.substring(1); 
System.out.println(currencyFormatted.replaceFirst("^0+(?!$)", "")); 
+0

做它的一個重要的十進制和使用'setScale' 2,或解析它作爲一個float和使用'NumberFormat' – Alex

回答

1

事情是這樣的:

String s = "+000000027511,00"; 
String r = s.replaceFirst("^\\+?0*", ""); 
r = r.replace(',', '.'); 
1

嘗試

String s = "+000000027511,00"; 
    s = s.replace("+", "").replaceAll("^0+", "").replace(',', '.'); 
    System.out.println(s); 
2

使用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 
+0

我會用'double'而不是'漂浮在99%的案件。 –

+0

是的,你是對的彼得。我也編輯了答案;) – Alex