怎么用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如何在字符串里面提取数字的同时把数字中的小数点也保留下来?