Pattern
現在の変数guessに格納されていないものをすべて「-」に置き換えるにはどうすればよいですか?推測は、メソッド呼び出しが異なれば変化します。charguess(この場合は=>'e')以外のものを"-"に置き換えたい。
String word = "ally";
char guess = 'e';
String currentPattern = word.replaceAll("[^guess]", "-");
明らかに、これは機能しません。
あなたはほとんどそれを持っています。文字列連結を使用します。
String currentPattern = word.replaceAll("[^" + guess + "]", "-");
このアプローチは、に正規表現メタ文字がない場合にのみ機能します。これらのメタguess
文字は、文字クラス内でエスケープする必要があります。それ以外の場合は、PatternSyntaxException
がスローされます。
この質問char
は、キャラクタークラスにを追加するだけの場合、PatternSyntaxException
何もエスケープしなくても、が発生しないことを示しています。
+
もうすぐです。連結演算子を使用して、推測を正規表現部分と連結します。
String word = "ally";
char guess = 'e';
String currentPattern = word.replaceAll("[^"+guess+"]", "-");
System.out.println(currentPattern);
正規表現文字列に変数を明示的に含める必要があります。
String word = "alely";
char guess = 'e';
System.out.println(word.replaceAll(String.format("[^%s]", guess), "-"));
それをメソッドに変えますか?
public String replaceAllExcept( String input, char pattern ) {
return input.replaceAll( "[^" + pattern + "]", "-" );
}
System.out.println( replaceAllExcept( "ally", 'e' );
System.out.println( replaceAllExcept( "tree", 'e' );