Java 如何在模式中使用变量替换除之外的所有变量?

Java 如何在模式中使用变量替换除之外的所有变量?,java,regex,string,Java,Regex,String,如何用“-”替换当前模式中变量guess中未存储的所有内容?猜测将随着不同的方法调用而改变。我想用“-”替换任何不是字符猜测(在本例中=>'e')的内容 显然,这是行不通的 你就快拿到了。使用字符串连接: String currentPattern = word.replaceAll("[^" + guess + "]", "-"); 只有在guess中没有正则表达式元字符时,这种方法才有效,而这些元字符需要在字符类中转义。否则将抛出PatternSyntaxException 这表明,在您的

如何用“-”替换当前
模式中变量guess中未存储的所有内容?猜测将随着不同的方法调用而改变。我想用“-”替换任何不是字符猜测(在本例中=>'e')的内容


显然,这是行不通的

你就快拿到了。使用字符串连接:

String currentPattern = word.replaceAll("[^" + guess + "]", "-");
只有在
guess
中没有正则表达式元字符时,这种方法才有效,而这些元字符需要在字符类中转义。否则将抛出
PatternSyntaxException


这表明,在您的情况下,如果只向角色类添加一个
char
,则即使您不转义任何内容,也不会发生
PatternSyntaxException

您几乎已经成功了。使用字符串连接:

String currentPattern = word.replaceAll("[^" + guess + "]", "-");
只有在
guess
中没有正则表达式元字符时,这种方法才有效,而这些元字符需要在字符类中转义。否则将抛出
PatternSyntaxException


这表明,在您的情况下,如果只向您的字符类添加一个
char
,即使您不转义任何内容,也不会发生
PatternSyntaxException

您就快到了,只需使用
+
串联运算符将guess与regex部分串联起来

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

就快到了,只需使用
+
连接操作符将guess与regex部分连接起来

            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), "-"));

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

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' );
把它变成一种方法

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

System.out.println( replaceAllExcept( "ally", 'e' );
System.out.println( replaceAllExcept( "tree", 'e' );


这是一个Java问题。与Regex完全无关:)抱歉,我是新来的:)您必须像jlordo所说的那样添加guess作为变量。无论如何,我有一个类似的问题:replaceAll可以在它的参数中得到一个regexp。。。所以它是一个与regexp相关的question@ben75:它可能与regex有关,但问题基本上是如何将变量内容插入到字符串中,这是基本java,没有其他内容。这是一个java问题。与Regex完全无关:)抱歉,我是新来的:)您必须像jlordo所说的那样添加guess作为变量。无论如何,我有一个类似的问题:replaceAll可以在它的参数中得到一个regexp。。。所以它是一个与regexp相关的question@ben75:它可能与regex有关,但问题基本上是如何将变量内容插入到字符串中,这是基本java,其他什么都没有。但当字符互换时,这也将替换单词,对吗?我的意思是,如果单词“abcdfeghijklmnop”和“out”在guess=“ghij”和guess=“jihg”@NamalFernando:
guess
是一个
char
,那么它总是只有一个字符。哎哟!错过了。我的错!:)非常感谢。在这种情况下,我将永远不会在guess中使用regex元字符。但是当字符交换时,这将替换单词,对吗?我的意思是,如果单词“abcdfeghijklmnop”和“out”在guess=“ghij”和guess=“jihg”@NamalFernando:
guess
是一个
char
,那么它总是只有一个字符。哎哟!错过了。我的错!:)非常感谢。在本例中,我将永远不会在guess中使用正则表达式元字符。