在用户的字符串中查找大写字符并对其进行计数

时间:2014-03-06 09:50:34

标签: java regex

我想在字符串中获取大写字符并且还有计数

package TEST;

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class case_test {
    public static void main(String agrs[]) {

        String str1 = "", regx;
        regx = "[A-Z]+";
        Scanner sc = new Scanner(System.in);
        Pattern pattern = Pattern.compile(regx);
        Matcher matcher = pattern.matcher(str1);
        int count = 0;

        System.out.println("ENTER A SENTENCE");
        str1 = sc.nextLine();

        while (matcher.find())
            System.out.println(str1.substring(matcher.start(), matcher.end())
                    + "*");

        count++;
    }
}

我想获得字符串中的大写字符以及它们的数量。

4 个答案:

答案 0 :(得分:2)

您可以尝试:

String uppers = str1.replaceAll("[^A-Z]", "");
int length    = uppers.length();

答案 1 :(得分:0)

此:

    String str1 = "";
    Matcher matcher = pattern.matcher(str1);
    int count = 0;

    System.out.println("ENTER A SENTENCE");
    str1 = sc.nextLine();

    while (matcher.find())

不会像你想象的那样奏效。你匹配空字符串。你以后再重新str1并不重要。

移动线

    Matcher matcher = pattern.matcher(str1);

在while循环之前,当您的str1变量引用您真正想要匹配的字符串时,例如用户的输入。

此外,您希望从正则表达式中删除+符号,因为它会一次性连续显示大写字母序列。

答案 2 :(得分:0)

您可以使用originalString& amp;来使用字符串交集(Intersection of two strings in Java)。 originalString.toUpperCase()。

答案 3 :(得分:0)

只需使用旧的方法,使用String的toCharArray方法转换char数组中的字符串,然后简单地迭代数组。如果char在65到90的范围内,则检查每次迭代[A的ASCII值是65,Z是90]。每个真实案例的增量。