1

我如何将所有未存储在当前变量guess 中的内容Pattern替换为“-”?猜测会随着不同的方法调用而改变。我想用“-”替换任何不是字符猜测的东西(在这种情况下 => 'e')。

String word = "ally";
char guess = 'e';
String currentPattern = word.replaceAll("[^guess]", "-");

显然,这是行不通的。

4

4 回答 4

4

你几乎拥有它。使用字符串连接:

String currentPattern = word.replaceAll("[^" + guess + "]", "-");

这种方法仅在您没有 regex 元字符的情况下才有效guess,需要在字符类中进行转义。否则PatternSyntaxException会抛出 a 。

这个问题表明,在您的情况下,您只将 a 添加char到您的角色类中,PatternSyntaxException即使您不逃避任何事情, a 也不会发生。

于 2013-02-21T07:54:21.970 回答
0

你快到了,只需使用+连接运算符将猜测与正则表达式部分连接起来。

            String word = "ally";
        char guess = 'e';
        String currentPattern = word.replaceAll("[^"+guess+"]", "-");
        System.out.println(currentPattern);
于 2013-02-21T07:54:46.017 回答
0

您需要在正则表达式字符串中显式包含变量:

String word = "alely";
char guess = 'e';
System.out.println(word.replaceAll(String.format("[^%s]", guess), "-"));
于 2013-02-21T07:59:04.940 回答
0

把它变成一种方法?

public String replaceAllExcept( String input, char pattern ) {
    return input.replaceAll( "[^" + pattern + "]", "-" );
}

System.out.println( replaceAllExcept( "ally", 'e' );
System.out.println( replaceAllExcept( "tree", 'e' );
于 2013-02-21T07:59:11.680 回答