java怎么提取出String中所有数字段并分别赋值?

比如已知string str="(12+2)*3";int a,b,c;
求助怎么把12,2,3从字符串中提取出来,并分别赋值给a,b,c?

String str="(12+2)*3";
String result="";
int a,b,c;
//将字符串中的非数字字符转换为空格
for(int i=0;i<str.length();i++){
if(Character.isDigit(str.charAt(i))){
result+=str.charAt(i);
}else{
result+=' ';
}
}
String[] arrStr=result.trim().split("\\s+");//去掉前后空格后,再以空格分割字符串
a=Integer.parseInt(arrStr[0]);
b=Integer.parseInt(arrStr[1]);
c=Integer.parseInt(arrStr[2]);
System.out.printf("a=%d,b=%d,c=%d",a,b,c);//输出a=12,b=2,c=3
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-10-15
先找一个判断出是否是数字的正则表达式。 然后遍历你的字符串,一个一个去对比,如果是数字,就提出来。 思路是这样。 String str = "Vz0-Ra0-Sz05.7sc"; for(int i=0;i<str.length();i++){ str.charAt(i); }
第2个回答  2019-10-15
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class test{
public static void main(String[] args) {
String str = "(12+2)*3";
int a=0,b=0,c=0,count=0;;
Matcher m = Pattern.compile("\\d+").matcher(str);
while (m.find()) {
count++;
if (count==1) {
a = Integer.parseInt(m.group());
}else if (count==2) {
b = Integer.parseInt(m.group());
}else{
c = Integer.parseInt(m.group());
}
}
System.out.println(a+","+b+","+c);
}
}
第3个回答  2019-10-15
找人给你写个正则表达式吧
相似回答