java - 使用正则表达式计算用户输入的标点符号并打印出来

标签 java regex

我正在尝试从用户输入中读取并计算句子中的标点符号并将其打印出来。谁能指导我正确的做法是什么。我的代码无法正常工作。

谢谢

int digit = 0, letter = 0, punc = 0;
    char c;

for (int a = 0; a<sentence.length(); a++){
        c=sentence.charAt(a);


        if(Character.isLetter(c))
            letter++;

        if(Character.isDigit(c))
            digit++;

        if(sentence.contains("[\\p{Punct}]")){
            punc++;
        }
    }

最佳答案

由于String#contains不使用正则表达式,您需要使用另一种方法来计算标点符号。

使用PatternMatcher

Pattern p = Pattern.compile("[\\p{Punct}]");
Matcher m = p.matcher("Hi, I'm testing the Regex Expression !");

while (m.find()) {
    punc++;
}

System.out.println(punc); // 3

关于java - 使用正则表达式计算用户输入的标点符号并打印出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36383719/

相关文章:

java - “Cannot find or load main class net.epsilon.app.Main” Java [等级]

java - 在 javafxports android 项目中查找配置文件时出现问题

php - 稍微复杂的正则表达式,用于匹配后面的否定外观,后跟一个精确的短语

regex - 使用 grep 分割字符串的 shell 脚本

java - 使用 log4j2 和 logback

java - 如何在不引发 Java 异常的情况下从 try/catch block 中中断

java - swing创建自定义Jbutton问题

正则表达式选择两个数字之间的空格

regex - 如何在 Vim 中只替换全字匹配?

c# - C# 中最好的 Regex 模式是什么,可以忽略 perl 中的某些字符组,如 (*SKIP)(*F)?