2014-11-05 17 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

相关问题