怎么用java把输入的字符串中的数字提取出来,并相加 输入数据样例: 12a3b@2p 输出数据样例: 1+2+3+2=8

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用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);

参考技术A String str="12a3b@2p";
StringBuffer sb=new StringBuffer();
char[] ch=str.toCharArray();
String tmpStr;
for (int i=0;i<ch.length;i++)
tmpStr=ch[i]+"";
if(tmpStr.matches("\\d1"))
sb.append(tmpStr).append("+");


sb.deleteCharAt(sb.length()-1);
System.out.println(sb.toString());本回答被提问者采纳
参考技术B 思路:先把字符串转换成一个字符串数组,然后循环遍历数组,判断每个字符的ascii码,如果字符的ascii码在0-9的ascii码的范围之内 ,就拼接相加啦
提示:0-9的ascii码:48-57
参考技术C import java.util.regex.Matcher;
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);



如何将excel电子表格中带有多个连字符“-”的中的某一数字用公式提取出来,数据量比较大,一个一个的输入很

如何将excel电子表格中带有多个连字符“-”的中的某一数字用公式提取出来,数据量比较大,一个一个的输入很麻烦,请教各位高手了,谢谢!如下
A1单元格:10-2A-1167-13EONAD-SIN
A2单元格:3-7-1168-1EONAD-OUT
。。。。。。
An单元格
现在我要提取中间的数字1167、1168.。。。。。到B1、B2.。。。。。。Bn单元格

输入以下公式,然后向下填充公式

=--TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",100)),200,100))

详见附图示例

参考技术A 格式相同就容易解决,而且都是提取4位数
在B1中输入公式,然后下拉填充
=MID(A1,FIND("@",SUBSTITUTE(A1,"-","@",2))+1,4)

如果提取的位数不确定,可以用下面有公式
=MID(A1,FIND("@",SUBSTITUTE(A1,"-","@",2))+1,FIND("@",SUBSTITUTE(A1,"-","@",3))-FIND("@",SUBSTITUTE(A1,"-","@",2))-1)追问

前面的连字符个数是一样多的,但提取的位数可能不同,提取值的前面连字符之间的数字个数也不同

追答

那你使用下面的这个公式就OK了

参考技术B 将A列数据复制到末尾列,对复制的列采用“-”进行分裂,然后讲你需要的数据复制到B列,删除辅助列内容 MEIFEGHDPIG 的回答非常专业,我提供一个业余的方法本回答被提问者采纳 参考技术C 试了一下,MEIFEGHDPIG的方法能实现 参考技术D ……

以上是关于怎么用java把输入的字符串中的数字提取出来,并相加 输入数据样例: 12a3b@2p 输出数据样例: 1+2+3+2=8的主要内容,如果未能解决你的问题,请参考以下文章

python怎么取出字符串中的数字

ai怎么把图片文字画出路径 提取出来

Python如何在字符串里面提取数字的同时把数字中的小数点也保留下来?

如何将excel电子表格中带有多个连字符“-”的中的某一数字用公式提取出来,数据量比较大,一个一个的输入很

Qt怎么把QTableWidget表格中的数据读取出来

Java问题:从字符串中提取用空格隔开的数字