2017-10-20 12 views
-1

私はこのコードが不明ですが、プロンプトの後に "oooooooooo"を入力すると(if文やプログラムで "o"を "one"などと登録するような)あなたは "oooooooooo"を "o"に翻訳しますか?1文字のレジスタを複数入力するには?

"o"( "oo"や "ooo"や "oooo" ...など)のさまざまな反復をマニュアルで書き留める必要がありますか?それは、OとOが同じになる無視方法メソッドのようなものでしょうか?だから "うーん..."と "o"は同じ文字列になります。

+1

私はあなたを考えます['String#replaceAll()'](http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#replaceAll-java.lang.String-java)を探しています。 lang.String-)。正規表現に精通していない場合は、[正規表現の学習](https://stackoverflow.com/questions/4736/learning-regular-expressions)を開始するのがよいでしょう。 – azurefrog

+1

正規表現を使用して 'o +'にマッチさせることができます。つまり、 "o"が1回以上繰り返されます。 – Blorgbeard

+0

あなたの試行はどこですか? –

答えて

0

正規表現使用:メソッドはnullをを返した場合、文字がすべて同じではありませんそして、そうでなければ、文字列として表され、その単一のcharを返します

public static String getSingleCharacter(String input){ 
     if(input == null || input.length() == 0) return null; 
     if(input.length() == 1) return input; 
     if(!input.toLowerCase().matches("^\\w*?(\\w)(?!\\1|$)\\w*$")){ 
      return Character.toString(input.toLowerCase().charAt(0)); 
     } 
     return null; 
} 

を。

0

おそらくこの1つのユースケースでは過度の使用ですが、将来正規表現を使用する方法を学ぶと役に立ちます。 JavaはPatternという正規表現ライブラリを提供しています。たとえば、正規表現/ o + ne /は、任意の文字列 "o ... ne"に少なくとも1つの "o"をマッチさせます。

-1
public string condense(String input) { 
    if(input.length >= 3) { 
     for(int i=0; i< input.length-2; i++){ 
      if(input.substring(i,i+1) != input.substring(i+1,i+2)){ 
       return input; 
      } 
     } 
    } 
    return input.substring(0,1); 
} 

これは文字列が3文字以上であるかどうかをチェックし、そうであれば文字列全体をループします。文字列内のすべての文字が同じ場合、文字列の圧縮されたバージョンが返されます。

0

同じ文字の2つ以上のランを一致して、次のように$1で同定された最初の一致グループの値との一致を置き換えるために、正規表現/(.)\1+/String#replaceAll()を使用します。

public static String squeeze(String input) { 
    return input.replaceAll("(.)\\1+", "$1"); 
} 

String result = squeeze("aaaaa bbbbbbb cc d"); 

assert(result.equals("a b c d")); 
関連する問題