Java 中怎么检测字符串中的数字,并提取出来
如字符串:ABCD5F7HIJ1怎么用函数把它提取出来得到5+7+1=13对不起,题目没说清,应该是用string对象做的正则表达式我还不会谢谢大家!这是我做的funct...
如字符串:ABCD5F7HIJ1 怎么用函数把它提取出来得到 5+7+1=13
对不起,题目没说清,应该是用string对象做的 正则表达式我还不会 谢谢大家!
这是我做的
function zh()
{
var zifu=for1.a.value;
var j=0;
for(var i=0;i<zifu.length;i++)
{
if(zifu.charAt(i)<10)
j=eval(j)+eval(zifu.charAt(i));
}
for1.b.value=j;
} 展开
对不起,题目没说清,应该是用string对象做的 正则表达式我还不会 谢谢大家!
这是我做的
function zh()
{
var zifu=for1.a.value;
var j=0;
for(var i=0;i<zifu.length;i++)
{
if(zifu.charAt(i)<10)
j=eval(j)+eval(zifu.charAt(i));
}
for1.b.value=j;
} 展开
10个回答
展开全部
for(int i=0;i<string.length();i++)
{
char x=string.CharAt(i);
if(Character.isDigit(x)==true){
//x类型转换然后统计
}
}
我的话大概会这样做。看你的意思是按字符分吧,就是连着的数字也是分开为几个??就是每次读一个字符,判断是否数字!
顺便也学习一下,有更好的方法麽?
{
char x=string.CharAt(i);
if(Character.isDigit(x)==true){
//x类型转换然后统计
}
}
我的话大概会这样做。看你的意思是按字符分吧,就是连着的数字也是分开为几个??就是每次读一个字符,判断是否数字!
顺便也学习一下,有更好的方法麽?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个用正则表达式做应该,就像楼上说的,几个数字连起来他们的就不可以了,但是我这个可以
import java.util.regex.Pattern;
public class Test74 {
public static void main(String[] args) {
String s = "ABCD5F7HIJ1";
int result = 0;
StringBuffer sb = new StringBuffer();
Pattern p = Pattern.compile("[^0-9]");//使用正则表达式,我设置的规则是除了数字
String[] ss = p.split(s);//利用上面的规则截取原字符串,只剩下数字了,并存放在数组中了
for (int i = 0; i < ss.length; i++) {//遍历数组,删除那些空的(原来是字母或者别的,用正则表达式给转成空了都)
if (!ss[i].equals("")) {
sb.append("+" + ss[i]);//拼最后的加法算式,但是最前面多了个加号,在后面处理
result = result + Integer.parseInt(ss[i]);//result是所有数字的和
}
}
String temp = sb.toString().substring(1);//因为第一位多了一个加号,所以取这个字符串第2位到最后,就把第一个加号处理掉了
System.out.println(temp + "=" + result);//拼下结果输出
}
}
虽然看着比较多,其实很简单,尤其正则表达式就2行,其他的都是在处理拼字符串而已
import java.util.regex.Pattern;
public class Test74 {
public static void main(String[] args) {
String s = "ABCD5F7HIJ1";
int result = 0;
StringBuffer sb = new StringBuffer();
Pattern p = Pattern.compile("[^0-9]");//使用正则表达式,我设置的规则是除了数字
String[] ss = p.split(s);//利用上面的规则截取原字符串,只剩下数字了,并存放在数组中了
for (int i = 0; i < ss.length; i++) {//遍历数组,删除那些空的(原来是字母或者别的,用正则表达式给转成空了都)
if (!ss[i].equals("")) {
sb.append("+" + ss[i]);//拼最后的加法算式,但是最前面多了个加号,在后面处理
result = result + Integer.parseInt(ss[i]);//result是所有数字的和
}
}
String temp = sb.toString().substring(1);//因为第一位多了一个加号,所以取这个字符串第2位到最后,就把第一个加号处理掉了
System.out.println(temp + "=" + result);//拼下结果输出
}
}
虽然看着比较多,其实很简单,尤其正则表达式就2行,其他的都是在处理拼字符串而已
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String str = ABCD5F7HIJ1;
int sum = 0;
String str2 = "";
for(int i = 0;i<str.length();i++){
int j = (int)str.charAt(i);
if((j > 47 && j < 58){
str2 = str2 + "+" + j;
sum += j;
}
}
str2 = str2.substring(0,str2.length()-2) + "=" + sum;
System.out.println(str2);
具体就这个意思,没验证,直接敲在这上面的,有可能有地方不准确,呵呵
int sum = 0;
String str2 = "";
for(int i = 0;i<str.length();i++){
int j = (int)str.charAt(i);
if((j > 47 && j < 58){
str2 = str2 + "+" + j;
sum += j;
}
}
str2 = str2.substring(0,str2.length()-2) + "=" + sum;
System.out.println(str2);
具体就这个意思,没验证,直接敲在这上面的,有可能有地方不准确,呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用ByteArrayOutputStream的toByteArray方法返回一个字符数组 然后用for循环取出其中的字符 然后跟a-z和A-Z比较 得到返回false的 再相加打印 虽然方法苯了点 不过还是可以实现的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询