利用java设计在一串字符串中提取几个double类型有小数点的数字?

例如String str="sadas#78299.2313133sdadsw231.1323131dsadada"
在str中提取78299.2313133和231.1323131这两个数字。如何做到???

package sv;


import java.util.Scanner;


public class SadasTest {

public static Double gss(int n){

double a = 1;

for(int i = 1;i <=n;++i )

a = a*0.1;

return a;

}

public static void f(String s){

String str = "a" +s + "b";

int j = 0;

int x = 0;

int flag = 0;

int flag1 = 1;

double y = 0;

int gs = 1;

double[] arry = new double[100];

for(int i = 0;i < str.length();++i){

if(Character.isDigit(str.charAt(i))|| str.charAt(i) == '.'){

flag = i;

if(Character.isDigit(str.charAt(i))){

if(flag1 == 1)

x = x*10+Integer.parseInt(String.valueOf(str.charAt(i)));

else{

y = y +(Integer.parseInt(String.valueOf(str.charAt(i))))*gss(gs);

gs++;

}

}else

flag1 = 0;  

}else if(flag == i-1&&i != 1/*&&(flag == 0&& i != 1)*/)

{

arry[j] = x+y;

j++;

x = 0;

y = 0;

gs = 1;

flag1 = 1;

}


}

for(int m = 0;m < j;m++){

int a = (int )arry[m];

if(arry[m] != a)

System.out.print(arry[m] + "\t");

else

System.out.print((int)arry[m] + "\t");

}

}

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

String str = sc.next();

f(str);


}


}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-04-02
str = str.replaceAll("\\D+","");

追问

我需要提取的是有小数点的数,而且这两个数是分开的。

第2个回答  2019-05-13
String str="sadas#78299.2313133sdadsw231.1323131dsadada"
Array[String] result = str.split("\\.").map(x=>x.replaceAll("\\D", "_").split("_+").mkString("_")).mkString(".").split("_")
相似回答