2014-11-05 45 views
0

嘿傢伙我有一個Java文件不是java腳本 我的line.tostring()是這樣的面積= 1.446097987730157平方米,我需要只得到1.44值Java的正則表達式如何獲得2個十進制值的字母數字字符串

String inputLine = line.toString(); 
    String regex = "\\d+(\\.\\d{1,2})?"; 
    String replace = ""; 
    Pattern p = Pattern.compile(regex); 
    Matcher m = p.matcher(inputLine); 
    inputLine = m.replaceAll(replace); 
dataArray[0] = inputLine; 

這就是我得到明顯

area = m 

,我需要得到的只有

1.44 

謝謝你和問候

+0

請證明最小的努力。我們不鼓勵不顯示最小研究的問題。 – Maroun 2014-11-05 20:06:35

+0

@ A4L我確定他的意思是一個java代碼片段。 – 2014-11-05 20:08:05

+0

好吧,正則表達式'/ \ d + \。\ d {2} /'將在_this_特殊情況下匹配它(轉義反斜槓以在java中使用它)。但是,您可能必須指定什麼是有效的輸入。 – 2014-11-05 20:09:28

回答

2

請嘗試以下2小數點精度

String inputLine = "12.10654"; 
String regex = "\\d+(\\.\\d{1,2})?";  
Pattern p = Pattern.compile(regex); 
Matcher m = p.matcher(inputLine); 
if(m.find()) 
    System.out.println(m.group()); 

,輸出爲12.10

+0

偉大的API,我正在替換我想要我的空替換字符串哈哈,所以我猜使用replaceAll函數是不是最好的?好的Talon頭像 – Lethal420 2014-11-05 20:14:42

+0

請注意更新的答案。 – 2014-11-05 20:15:12

+0

幾乎在那裏我得到的區域=米而不是1.44 – Lethal420 2014-11-05 20:18:45

1

你可以嘗試這樣的事:

@Test 
public void find2Dec() { 
    Pattern p = Pattern.compile("(\\d+\\.\\d{0,2})+?"); 
    Matcher m = p.matcher("area = 1.446097987730157 3.1415 m2"); 
    StringBuffer sb = new StringBuffer(); 
    while(m.find()) { 
     String g = m.group(1); 
     System.out.println(g); 
     m.appendReplacement(sb, ""); 
    } 
    m.appendTail(sb); 
    System.out.println(sb.toString()); 
} 

輸出爲

1.44 
3.14 
area = 6097987730157 15 m2 
+0

謝謝,這是更多然後我需要 – Lethal420 2014-11-05 20:44:30

+0

@ Lethal420不客氣! – A4L 2014-11-05 21:12:12

相關問題