Java 替换索引处的所有字符(在StringBuilder中),从其出现的另一个字符串开始

Java 替换索引处的所有字符(在StringBuilder中),从其出现的另一个字符串开始,java,string,eclipse,char,stringbuilder,Java,String,Eclipse,Char,Stringbuilder,好吧,我正在做一个刽子手游戏,对Java来说并不陌生,但我还在学习。我有个问题一直困扰着我 我需要在索引处替换字符串生成器(与生成的单词具有相同的字符数)中的所有字符(如果用户正确猜测了其中一个字母)。我知道有点复杂,但这里有一些代码 StringBuilder wordTemplate = new StringBuilder(); for (int i = 0; i < theWord.length(); i++) { wordTemplate.append('?'); } 如

好吧,我正在做一个刽子手游戏,对Java来说并不陌生,但我还在学习。我有个问题一直困扰着我

我需要在索引处替换字符串生成器(与生成的单词具有相同的字符数)中的所有字符(如果用户正确猜测了其中一个字母)。我知道有点复杂,但这里有一些代码

StringBuilder wordTemplate = new StringBuilder();
for (int i = 0; i < theWord.length(); i++) {
    wordTemplate.append('?');
}

如前所述,这只适用于每个字符中的1个,不适用于多次出现。提前感谢:)

您可以替换以下代码:

wordTemplate.deleteCharAt(theWord.indexOf(guess));
wordTemplate.replace(theWord.indexOf(guess), theWord.indexOf(guess), guess);

试试这个:

    String guess = "l";
    int start = 0;
    do {
        int index = theWord.indexOf(guess, start);
        if(index >= 0) {
            wordTemplate.replace(index, index + 1, guess);
            start = index + 1;
        } else
            break;
    } while (true);

    System.out.println(wordTemplate);
wordTemplate = new StringBuilder(wordTemplate.toString().replace("?", guess));
    String guess = "l";
    int start = 0;
    do {
        int index = theWord.indexOf(guess, start);
        if(index >= 0) {
            wordTemplate.replace(index, index + 1, guess);
            start = index + 1;
        } else
            break;
    } while (true);

    System.out.println(wordTemplate);