有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java检查字符串中重复字符的运行

我试图检查是否有人在聊天中输入了一条重复字符太多的消息。我想对所有可能的角色都这样做,并检查它们是否超过某个限制

int WithChars = m.length();
int WithoutChars = m.replace("-", "").length();


if(WithChars - WithoutChars >= 10) {
    //Do stuff
}

目前它只检查“-”,但我希望它检查多个字符,因此如果有人键入“<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;<;&或者“aaaaa”它仍然会做这个检查


共 (2) 个答案

  1. # 1 楼答案

    对于我来说,最简单的解决方法是循环遍历所有字母,检查前一个字母是否相同,如果相同,则增加一个整数,以计算一个字符重复的次数。新字符一出现,就重置该整数。实现这一点的最基本方法(我认为)是创建一个函数,然后在“重复”整数达到10时返回true(在您的例子中),我是这样做的:

    public boolean isRepeated(String s) {
        char[] chars = s.toCharArray();
    
        char previousChar = 0;
        int repeated = 0;
        for(char c : chars) {
            if(previousChar == c) {
                repeated++;
            } else {
                repeated = 0;
            }
            if(repeated >= 10) {
                return true;
            }
            previousChar = c;
        }
        return false;
    }
    

    请记住,如果要检查重复字符多次(如果字符串为“aaaaaa+192”),则必须使用不同的方法

  2. # 2 楼答案

    这是正则表达式的工作

    使用^{}^{},可以轻松搜索重复字符

    正则表达式是(.)\1{9,}。这很简单:匹配任何字符,捕获它,然后将捕获的字符匹配9次或更多次(第十个字符是您捕获的第一个字符。如果您对正则表达式不熟悉,请花一些时间阅读许多教程中的一个,解释它们的工作原理

    import java.util.regex.*;
    
    public boolean containsRepeatedCharacters(String input) {
        Pattern p = Pattern.compile("(.)\\1{9,}");
        Matcher m = p.matcher(input);
    
        return m.find();
    }