java中怎么把一个字符串中数字和字符分别提取出,例如字符串12+3,要提取成12,3,+,并且打印出来。

如题所述

先把字符串分割成字符数组,三种方式判断是不是数字
参考http://www.blogjava.net/Javaphua/archive/2007/06/05/122131.html
1.java自带函数

for (int i = str.length();--i>=0;){
if (!Character.isDigit(str.charAt(i))){
这里将非数字提取
}else{
这里将数字提取

}

}

2用正则表达式,不过这个是判断整个字符串的。你把字符串分割了再循环调用
public static boolean isNumeric(String str){
Pattern pattern = Pattern.compile("[0-9]*");
return pattern.matcher(str).matches();
}

3用ascii码,这个最简单了,小雨0或者大于9的asscii码就肯定不是数字

public static boolean isNumeric(String str){
for(int i=str.length();--i>=0;){
int chr=str.charAt(i);
if(chr<48 || chr>57)
return false;
}
return true;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-15
public class Test {
public static void main(String[] args) {
Pattern p=Pattern.compile(\\d+);
Matcher matcher=p.matcher("12+3");
while(matcher.find()) {
System.out.println(matcher.group());
}
}
}
第2个回答  2013-10-15
根据它们的ascii码区分,用正则表达式会简单点:
String input="12+3";
String regExp="\\D";//非数字的正则表达式
String [] nums=input.split(regExp);//取得数字
System.out.println(Arrays.asList(nums));
//取得非数字
Pattern p = Pattern.compile(regExp);
Matcher m = p.matcher(input);
while(m.find()){
System.out.println(m.group());
}本回答被提问者采纳
相似回答