我最近在一次采访中被问到这个问题(Java编程阙)
我写了这段代码,但这似乎有点复杂。这段代码可以用其他方式完成吗?
public int convertString(String str){
int num=0, currNo = 0;
Boolean isNegative = false;
for (int i=0 ; i<str.length(); i++){
Char t = str.charAt(i) ;
if(t == ‘-‘){
if(isNegative)
num = num-currNo;
else
num = num + currNo;
isNegative=true;
currNo=0;
}
else if(((t-‘0’) <= 9 && (t-‘0’)>=0)){
currNo = (currNo*10) + t;
}
else {
if(isNegative)
num = num-currNo;
else
num = num + currNo;
currNo=0;
isNegative=false;
}
}
if(isNegative)
num = num-currNo;
else
num = num + currNo;
isNegative=true;
return num;
}
答案 0 :(得分:8)
使用正则表达式:
Matcher m = Pattern.compile("-?\\d+").matcher(str);
long sum = 0;
while(m.find()) {
sum += Integer.parseInt(m.group());
}