我有一个以下字符串: "我有22支香蕉,121支铅笔和p32苹果"。
如何编写代码以便返回字符串中数字的出现?
(在这种情况下应输出3,因为有3个数字)
注意:数字被定义为连续的数字序列,两者之间没有任何中断。
public int countNums(){ ...实行 }
答案 0 :(得分:4)
您可以使用正则表达式。您可以添加更多可能在数字周围的字符;我添加的只有少数\s - space
或, - comma
:
public static int countNumbers(String str) {
final Pattern standaloneNumber = Pattern.compile("(?<=[\\s,])\\d+(?=[\\s,])");
Matcher matcher = standaloneNumber.matcher(str);
int pos = 0;
int count = 0;
while (matcher.find(pos)) {
pos = matcher.end();
count++;
}
return count;
}
countNumbers(“我有22支香蕉,121支铅笔和32支苹果”) - 返回3
答案 1 :(得分:0)
您可以使用以下代码。
public class Main {
public static void main(String[] args) {
String s = "I have 22 bananas , 121 pencils, and 32 apples";
String[] sarr = s.split(" ");
int count = 0;
for(String str : sarr) {
try {
Integer.parseInt(str);
} catch(NumberFormatException e) {
count++;
}
}
System.out.println(sarr.length - count);
}
}
如果数字是十进制使用double而不是Integer。
答案 2 :(得分:0)
你可以尝试这个,它对我有用
public static void main(String[]args){
String str = "I have 22 bananas , 121 pencils12, and 32 apples";
str = str.replaceAll("[^0-9]+", " ");// numbers separated by spaces
int o=str.trim().split(" ").length;// turn it to array and count the length
System.out.println(o);
}
}