怎么用java把输入的字符串中的数字提取出来,并相加 输入数据样例: 12a3b@2p 输出数据样例: 1+2+3+2=8
import java.util.Arrays;
import java.util.Scanner;
/** @author fengzi
* E-mail:fengzi165@gmail.com | 1029511293@qq.com
* 2011-9-27
* 怎么用java把输入的字符串中的数字提取出来,并相加 输入数据样例: 12a3b@2p
* 输出数据样例: 1+2+3+2=8
*/
public class SumOfNum {
public static void main(String[] args) {
/*定义一个int[],用于接收字符串中的数字,本程序采用动态的增加数组的长度**/
int[] num = {};
Scanner sc = new Scanner(System.in);
//请输入字符串
System.out.println("请输入字符串");
//接收从控制台输入的字符串
String str = sc.nextLine();
//遍历字符串
for(int i=0 ; i<str.length() ; i++){
/*判断某个字符是否是数字,在ASCLL字符表中
* 数字字符(0~9)对应的ASCLL码是从48 ~ 57,
* 如果字符是在这个区间的,就把num数组的长度增加1
* 然后把数据添加到数组的末尾
* */
if(str.charAt(i)>=48 && str.charAt(i)<=57){
num = Arrays.copyOf(num, num.length + 1);
num[num.length - 1] = str.charAt(i);
}
}
//数字的和
int result = 0;
//s用于保存格式化输出的字符串
String s = "";
for(int i = 0 ; i < num.length ; i++){
if(i != num.length - 1){
/*如果 num[i]不是数组的最后一个数,则在字符串的后面加上" + "*/
s += num[i] - 48 + " + " ;
}else{
/*如果num[i]是数组的最后一个数,则在字符串的后面加上 " = "*/
s += num[i] - 48 + " = ";
}
//计算数字的 和
result += num[i] - 48;
}
//输出结果
System.out.println(s + result);
}
}
StringBuffer sb=new StringBuffer();
char[] ch=str.toCharArray();
String tmpStr;
for (int i=0;i<ch.length;i++){
tmpStr=ch[i]+"";
if(tmpStr.matches("\\d{1}")){
sb.append(tmpStr).append("+");
}
}
sb.deleteCharAt(sb.length()-1);
System.out.println(sb.toString());
提示:0-9的ascii码:48-57
import java.util.regex.Pattern;
public class tst {
public static void main(String[] args) {
String s = "fas30deg60ds190$%^";
Matcher m = Pattern.compile("\\d+").matcher(s);
int num = 0;
while (m.find()) {
num = num + Integer.parseInt(m.group(0));
}
System.out.println(num);
}
}