2014-09-19 79 views
0

請幫我解決下一個問題:如何解析字符串以獲得雙倍的值

有String模式,假設它是public final靜態變量。有我們搜索的字符串。有一流的,簡單的包裝翻番

public class Wrapper { 

    private double value; 

    public double getValue() { 
     return value; 
    } 

    public Wrapper(double value) { 
     this.value = value; 
    } 
} 

我需要方法

public Wrapper parse(String s, int index) 

返回如果字符串指數是小數點後最多2個位數(雙號包裝的對象,如果有小數點在所有的)和右後數字結尾有字符串

String pattern = "money"; 
String search = "Giveme10.25moneyplease"; 

解析(搜索,6)返回新的包裝(10後 例如字符串圖案。 25)

在其他情況下(索引小於零,大於字符串的長度,從索引開始的子字符串根本不是數字,或者是雙精度數字,但它包含超過小數點後兩位數字,或者存在後數字)方法沒有字符串圖案必須返回不同之處僅字符串模式必須與小數點後最大2位數字和所有其他相同

String pattern = "money" 
String s = "Ihavemoney10.50" 

parse1(第一和然後雙號空

而另一種方法5)返回新包裝(10.50)

回答

2

您可以使用DecimalFormatParsePosition沿着這樣

import java.text.DecimalFormat; 
import java.text.ParsePosition; 

public class TestP { 

    public static void main(String[] args) { 


     DecimalFormat decimalFormat = new DecimalFormat("00.##'money'"); 

     String search = "Giveme10.25moneyplease"; 

     int index = 6; 
     //output 10.25 
     Number number = decimalFormat.parse(search, new ParsePosition(index)); 

    if (number != null) { 
     String s = number.toString();   
     if (s.contains(".") && s.length() > 5) { 
      number = null; 
     } 
    } 
    System.out.println(number); 

    } 

} 
+0

我很抱歉,但它的要求後十進制數必須是字符串模式右後 – 2014-09-19 21:04:07

+0

字符串「Giveme10.25litersofmilk」和指數6就必須如果字符串模式仍然是「錢」,則爲空 – 2014-09-19 21:07:59

+0

@EdisonMiranda我更新了我的答案 – sol4me 2014-09-19 21:43:16