2017-03-04 1 views
0

누군가 문자를 너무 많이 복제하는 메시지를 채팅에 입력 한 시간을 확인하려고합니다. 가능한 모든 문자에 대해이 작업을 수행하고 특정 제한을 초과하는지 확인합니다.문자열에서 중복 된 문자가 실행되는지 확인합니다.

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


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

에게 그것은 단지 확인을위한 '-'하지만 난 누군가가 "< < < < < < < <"또는 "AAAAAA"아직 할 줄을 입력 한 경우 그래서, 여러 문자를 확인하려면 이 수표.

+0

무엇을 확인 마십시오. 작동 방식 – Andreas

+1

을 설명하는 (또는 more) 반복되는 문자가 있습니까? – Dancrumb

+0

@Andreas 그/그녀는 10 개의 반복 된 문자를 확인하려고합니다 – ItzBenteThePig

답변

1

정규 표현식에 대한 작업입니다.

PatternMatcher을 사용하면 반복되는 문자를 쉽게 검색 할 수 있습니다.

정규식은 (.)\1{9,}입니다. 이것은 간단합니다 : 모든 캐릭터를 일치시키고 캡처 한 다음 캡처 한 캐릭터를 9 번 이상 일치시킵니다 (10 번째 문자가 캡처 한 첫 번째 문자입니다. 정규 표현식을 처음 사용하는 경우에는 많은 문자 중 하나를 따르는 데 시간이 필요합니다. 많은 튜토리얼 밖에 당신이 10 찾고 있습니다. 문자가없는 문자열이 빈 문자열입니다. 난 당신이 뭘 하려는지 얻을하지 않습니다?

import java.util.regex.*; 

public boolean containsRepeatedCharacters(String input) { 
    Pattern p = Pattern.compile("(.)\\1{9,}"); 
    Matcher m = p.matcher(input); 

    return m.find(); 
} 
+0

당신이 입력 한 내용에 관계없이 (적어도) 나에게 거짓을 반환합니다. – ItzBenteThePig

+1

'(연속) * 반복 문자를 찾고있는 경우에만'match()'가 아닌'find()'를 사용하십시오. – Andreas

+0

@ Andreas, yup. 그것이 OP가 원했던 것입니다. 왜냐하면 실제로는 명확하지 않았기 때문입니다. 그러나 그들의 예는 독점적으로 연속적이었습니다. – Dancrumb

1

내 머리 꼭대기에서 가장 간단한 해결책은 모든 글자를 반복하여 이전 글자가 같은지 확인하고, 그렇다면 글자 수를 계속 유지하는 정수를 증가시키는 것입니다 되풀이했다. 새로운 char가 오자 마자 그 정수를 다시 설정하십시오. 은 "반복"정수 (귀하의 경우) 10 안타 이에 대한 가장 기본적인 방법은 (내가 생각하는) 함수를 만든 다음 바로 진정한 반환 것, 나는 이런 식으로했다 :

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; 
} 

보관하십시오 두 번 이상 반복되는 문자를 확인하려는 경우 (문자열이 "aaaaaaaaaa + 192 ----------"인 경우) 다른 방법을 사용해야합니다.

+0

* 연속 * 반복되는 문자를 찾고있는 경우에만 작동합니다. – Andreas

+0

@Andreas 그가 누구입니까 – ItzBenteThePig

+0

* 어떻게 * * 알아? 질문은 심지어 반복적 인 말도하지 않는다. 훨씬 적은 연속적인 문자가 이다. 문제의 코드 시도는 연속되지 않는 문자를 찾습니다. 그렇다면 왜 OP에서 연속되는 반복되는 문자를 원한다고 가정합니까? – Andreas

관련 문제