【问题标题】:Replace a string.替换一个字符串。
【发布时间】:2014-04-07 17:40:21
【问题描述】:

我已经替换了一个字符串,以便所有字母都显示为 ** 但是当我要求用户输入一个字符时,我似乎无法让字母从 * 恢复为字符串.我将在下面向您展示我在代码中所做的事情:

    System.out.println(randomPirateWord.replaceAll("\\S", "*"));
    System.out.println("guess a letter");
    char letterGuesed = input.findInLine(".").charAt(0);
    System.out.println(randomPirateWord.replaceAll("\\S"+letterGuesed,"*")); 

【问题讨论】:

    标签: java string replace char


    【解决方案1】:

    方法replaceAll 的工作方向相反。首先是正则表达式,然后是匹配的替换,因此您将猜测的字母替换为“*”,这可能与您想要实现的目标相反。

    【讨论】:

      【解决方案2】:

      我会使用一个String 来保存你的hiddenWord,并在另一个函数中只显示*s 中的字符串长度,然后将letterGuessedhiddenWord 进行比较并更改@987654326 @s 那样回到hiddenWord

      【讨论】:

        【解决方案3】:

        可能不适用于replace all,但这似乎可行:

        import java.util.Scanner;
        class hola{
            public static void main(String args[]){
                Scanner sc = new Scanner(System.in);
                String randomPirateWord = "HelloWorld";
                System.out.println("");
                boolean notComplete = true;
                char words[] = new char[randomPirateWord.length()];
                char words2[] = new char[randomPirateWord.length()];
                for(int i = 0; i < randomPirateWord.length(); i++){
                    words[i] = randomPirateWord.charAt(i);
                    words2[i] = '*';
                }
                while(notComplete){
                    System.out.print("Type a letter: ");
                    char letter = sc.next().charAt(0);
                    notComplete = false;
                    for(int i = 0; i < randomPirateWord.length(); i++){
                        if(words[i] == letter){
                            words2[i] = letter;
                        }
                    }
                    for(int i = 0; i < randomPirateWord.length(); i++){
                        System.out.print(words2[i]);
                    }
                    for(int k = 0; k < randomPirateWord.length(); k++){
                        if(words2[k] == '*'){
                            notComplete = true;
                            break;
                        }
                    }
                    System.out.println("");
                }
            }
        }
        

        【讨论】:

        • 这是迄今为止效果最好的,唯一的问题是我需要能够在其中有一个空格,并且我需要能够输入另一个字母,这样如果用户要输入 h 它将显示为 hll **l
        • 当然,那是你自己做的……就像我说的那样,从用户输入中读取letter
        • 唯一的例外是:“单词之间没有空格”
        猜你喜欢
        • 2013-12-03
        • 2019-05-14
        • 2020-01-12
        • 1970-01-01
        • 1970-01-01
        • 2017-01-28
        • 2017-03-07
        • 2021-10-27
        相关资源
        最近更新 更多