2012-04-03 66 views
-4

分割的十進制數,我想知道從一個字符串分裂十進制數的正則表達式說如何從一個字符串在JAVA

str = "COD Amount = 333.98"

在上面的字符串值,我僅僅只需要十進制值,即333.98

+1

除了正則表達式,還有更簡單的方法。這是強制性的嗎? – 2012-04-03 10:53:19

回答

3

這是必須使用正則表達式?如果不是,那麼你可以使用:

public class Split { 
public static void main(String[] args) { 
    String line = "COD Amount = 333.98"; 
    String[] array = line.split("="); 
    double amount = Double.parseDouble(array[1]); 
    System.out.println(amount); 
} 
} 

希望它能幫助。

編輯

用正則表達式:

import java.util.regex.Pattern; 
import java.util.regex.Matcher; 

public class Split { 
public static void main(String[] args) { 
    String line = "COD Amount = 333.98"; 
    Pattern p = Pattern.compile(".+= (\\d+\\.\\d+)"); 
    Matcher m = p.matcher(line); 
    if (m.find()) { 
     System.out.println(m.group(1)); 
    } 
} 
} 

但要確保您的所有字符串都在相同的格式:[代碼] [說明] = [數字]

(我仍然認爲第一種解決方案是最合適的)

編輯2

由於您的輸入是這樣的: "COD Amount = 333.98, Coverage = $564.000"(你應該向我們提供您線路的全部格式在原來的問題)

你可以結合前面的兩個解決方案:

import java.util.regex.Pattern; 
import java.util.regex.Matcher; 

public class Split { 
public static void main(String[] args) { 
    String line = "COD Amount = 333.98, Coverage = $564.000"; 
    String[] array = line.split(","); 

    for (int i = 0; i < array.length; i++) { 
     Pattern p = Pattern.compile(".+= \\$?(\\d+\\.\\d+)"); 
     Matcher m = p.matcher(array[i]); 
     if (m.find()) { 
      System.out.println(m.group(1)); 
     } 
    } 
} 

}

+1

您是否在@Sarathy之前驗證字符串? 原因例如: 「COD A231.2mount = 333.98」將在大多數微不足道的正則表達式上產生錯誤的結果。 這就是爲什麼拆分在解析時更容易。 – 2012-04-03 11:01:34

+0

是的,我覺得正則表達式會對我的請求做得更好,bcoz這是我的輸入值看起來像 COD Amount = 333.98,Coverage = $ 564.00 這裏我需要用「,」拆分字符串,再次我需要拆分小數來自已分割字符串的值。 – Sarathee 2012-04-03 11:34:46

+0

@sarathy然後你自己回答:首先使用整行分割,然後使用正則表達式(檢查我編輯的答案)。 – 2012-04-03 11:48:16