在Java中查找字符串中的数字计数

时间:2018-05-31 18:47:52

标签: java

我有一个以下字符串: "我有22支香蕉,121支铅笔和p32苹果"。

如何编写代码以便返回字符串中数字的出现?

(在这种情况下应输出3,因为有3个数字)

注意:数字被定义为连续的数字序列,两者之间没有任何中断。

public int countNums(){     ...实行 }

3 个答案:

答案 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);
   }
}