2015-05-04 23 views
2

我有一個字符串。如何將此String(包含字符串和整數)轉換爲實際的數字? (Java)

String value = "The value of this product: 13,45 USD"; 

我想這是一個雙重這應該是這樣的:

double actualprice=13,45; 

或者我應該使用浮動,雙沒用嗎?對不起,我不是專家。

那麼我怎樣才能將這個字符串轉換爲數字?

哦,我差點忘了,我有一個代碼,它使它成爲「13,45」,但它仍然是一個字符串。

String price = "The price is: 13.45"; 
    String s = price; 
    for(int b=0;b<s.length();b++){ 


    if(s.charAt(b)=='.') { 
     System.out.print(","); 
    } 
    if(Character.isDigit(s.charAt(b))) { 
    System.out.print(s.charAt(b)+""); 
} 
} 
+0

您的雲嘗試使用一些正則表達式,並用「」替換所有的數字值。那麼你只需要調用Double的解析方法:) – damus4

+0

如何將商店'13,45'存儲在'double'中?順便說一句 – Blip

+0

,因爲逗號 – maxgraham

回答

0

此代碼將工作。如果未找到以不同方式和編號格式化的字符串,它將拋出一個NumberFormatException

double actualprice = Double.parseDouble(
    value.replaceFirst("The value of this product: (\\d+),(\\d+) USD", "$1.$2")); 

System.out.println(actualprice); 
+0

不好意思,它看起來不錯,但我不明白。我很抱歉,我試圖理解,但我不能:D你能解釋一下嗎?因爲我試圖使用這個代碼,我修改了一些部分,但是它給了我一個錯誤。實際上我的字符串是「$ 38.80 USD」,所以我試圖這樣做:(「$:(\\ d +),(\\ d +)USD」,「$ 1. $ 2」));但它給了我一個錯誤。 – maxgraham

0

這可能對您有幫助。

public class RegexTest1 { 

    public static void main(String[] args) { 
     Pattern p = Pattern.compile("\\d+,\\d+"); 
     Matcher match = p.matcher("The value of this product: 13,45 USD"); 
     Double d ; 
     while (match.find()) { 
      System.out.println(match.group()); 
      DecimalFormat df = new DecimalFormat(); 
      DecimalFormatSymbols symbols = new DecimalFormatSymbols(); 
      symbols.setDecimalSeparator(','); 
      symbols.setGroupingSeparator(' '); 
      df.setDecimalFormatSymbols(symbols); 
      try { 
       d = (Double)df.parse(match.group()); 
       System.out.println(d); 
      } catch (ParseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    } 

} 
相關問題