java - java中如何统计以大写字母开头的单词?

标签 java count word uppercase

我想制作一个程序,打印以大写字母开始的单词数。所以我制作了两个字符串 str1 = "The deed is done"str2 = "My name is Bond, JAMES Bond"。对于第一个字符串,它打印了我想要的 1。但是对于第二个,它打印 8 而不是 4,因为 JAMES 是大写的。


    public static void main(String[] args){
        String str1 = "The deed is done";
        String str2 = "My name is Bond, JAMES Bond";

        System.out.println(uppercase(str2));
    }

    public static int uppercase(String str){
        int cnt = 0;

        for(int i = 0; i < str.length(); i++){
            if(Character.isUpperCase(str.charAt(i)))
                cnt++;
        }

        return cnt;
    }

这就是我目前所拥有的。我该怎么做才能不计算该词中的其他字母?

最佳答案

您应该检查输入字符串中每个单词第一个字符,而不是输入字符串的所有字符

public static int uppercase(String str){
    int cnt = 0;

    String[] words = str.split(" ");

    for(int i = 0; i < words.length; i++){
        if(Character.isUpperCase(words[i].charAt(0)))
            cnt++;
    }

    return cnt;
}

一种更“声明性的方法”可以使用 Stream

public static long uppercase2(String str){
    return Arrays.stream(str.split(" "))
            .map(word -> word.charAt(0))
            .filter(Character::isUpperCase)
            .count();
}

关于java - java中如何统计以大写字母开头的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59382202/

相关文章:

java - 用于 Java 的快速、易学且对 POJO 友好的 ORM?

mysql - 如何在MySQL中找到计数结果的平均值?

excel - 如何统计文件夹中的文件数

在 char* 数组中查找 char* 类型的 c++ 程序

php - 如何在一定数量的单词后插入文本

java - 如何使用自定义 JDK 构建 Jenkins 项目?

java - 格式化 TextWatcher android

java - 使用 BigInteger 乘法运算符

sql - 计算个人在当前团队之前与其他团队成员的先前联系

haskell - 使用像 `Int8` 这样的低位整数类型以及它们的用途