2017-03-04 3 views
0

文字を何度も複製するチャットにメッセージを入力したときにチェックしようとしています。私はすべての可能な文字のためにこれを行い、それらが一定の限界を超えているかどうかをチェックしたい。 「 - 」のために、それが唯一のチェック瞬間文字列内の重複文字の実行を確認する

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


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

が、私はそれは、複数の文字をチェックしたいので、誰かが「< < < < < < < <」または「AAAAAA」を入力した場合には、まだやるべきだろうこの小切手。私の頭の上の

+0

私はあなたが何をしようとして取得しない?何をチェックしてください。文字のない文字列が空の文字列です。 – Andreas

+1

あなたは(10探していますか行のそれ以上)の繰り返し文字?@Andreas彼/彼女は10文字に – Dancrumb

+0

はそう同じものではありません。質問する必要があります繰り返される文字が連続している必要があるかどうかを含めて明確にされています(例えば、 'aaabaaa' six repeat 'a'の?)? – ItzBenteThePig

答えて

1

これは、正規表現のための仕事です!

PatternMatcherを使って、簡単に繰り返される文字を検索することができます。

正規表現は(.)\1{9,}です。これは簡単です:任意の文字にマッチして、それをキャプチャし、キャプチャしたキャラクタを9回以上マッチさせます(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

は '見つける()'ではなく '試合を()'を使用して、あなたは*の連続*繰り返し文字を探しているなら解決策が唯一のどのような作品falseを返します。 – Andreas

+0

@アンドレアス、yup。これは私がOPが望んだものです。彼らは実際に明示的ではなかったからですが、その例は排他的に連続していました。 – Dancrumb

1

、これに対する最も簡単な解決策は、文字のすべてをループしているし、もしそうなら、以前は、同じであったかどうかを確認、文字がされている量のカウントを保持する整数を高めます繰り返される。新しい文字が来たら直ちに、その整数をリセットします。 「繰り返し」整数は(あなたのケースで)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

関連する問題