私はこのコードが不明ですが、プロンプトの後に "oooooooooo"を入力すると(if文やプログラムで "o"を "one"などと登録するような)あなたは "oooooooooo"を "o"に翻訳しますか?1文字のレジスタを複数入力するには?
"o"( "oo"や "ooo"や "oooo" ...など)のさまざまな反復をマニュアルで書き留める必要がありますか?それは、OとOが同じになる無視方法メソッドのようなものでしょうか?だから "うーん..."と "o"は同じ文字列になります。
私はこのコードが不明ですが、プロンプトの後に "oooooooooo"を入力すると(if文やプログラムで "o"を "one"などと登録するような)あなたは "oooooooooo"を "o"に翻訳しますか?1文字のレジスタを複数入力するには?
"o"( "oo"や "ooo"や "oooo" ...など)のさまざまな反復をマニュアルで書き留める必要がありますか?それは、OとOが同じになる無視方法メソッドのようなものでしょうか?だから "うーん..."と "o"は同じ文字列になります。
正規表現使用:メソッドは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;
}
を。
おそらくこの1つのユースケースでは過度の使用ですが、将来正規表現を使用する方法を学ぶと役に立ちます。 JavaはPatternという正規表現ライブラリを提供しています。たとえば、正規表現/ o + ne /は、任意の文字列 "o ... ne"に少なくとも1つの "o"をマッチさせます。
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文字以上であるかどうかをチェックし、そうであれば文字列全体をループします。文字列内のすべての文字が同じ場合、文字列の圧縮されたバージョンが返されます。
同じ文字の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"));
私はあなたを考えます['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
正規表現を使用して 'o +'にマッチさせることができます。つまり、 "o"が1回以上繰り返されます。 – Blorgbeard
あなたの試行はどこですか? –