Java替换特定字符

时间:2012-11-12 09:57:56

标签: java string replace

这是我在这个网站上的第一个问题,所以我会尽量不要成为一个完整的菜鸟。

我目前正在用java创建刽子手游戏。 所以我的问题是,如果我们被赋予一个词" ghost" 和鬼被替换为" _",

hiddenWord = ghost.length();
for (i=0; i < ghost.lenth(); i ++)
System.out.print("_ ")

给我们输出

&#34; _ _ _ _ _&#34;

让我们说这封信&#34; O&#34; 这封信&#34; o&#34;猜对了,我怎么替换`

"_ _ _ _ _" with 
"_ _ o _ _ "

我当前的班级档案

public void pickWord()
    {
        String[] listOfWords;
        listOfWords = new String[10];
        listOfWords[0] = "shenanigans";
        listOfWords[1] = "conversely";
        listOfWords[2] = "octopus";
        listOfWords[3] = "dizzy";
        listOfWords[4] = "malicious";
        listOfWords[5] = "goosebumps";
        listOfWords[6] = "flying";
        listOfWords[7] = "staff";
        listOfWords[8] = "xylophone";
        listOfWords[9] = "zapping";
        Random generator = new Random();
        int lineNumber = generator.nextInt(9);
        disguisedWord = listOfWords[lineNumber];


    }   
    public void displayMark()
    {
        for( int i = 0; i < disguisedWord.length(); i ++)
            underscore = underscore + "_ ";
        System.out.println(underscore);

    }
    public void makeGuess() throws IOException
    {
        System.out.println("Your word is " + disguisedWord.length() + " letters long.");
        System.out.println("Feel free to guess a letter.");
        guess = (char)System.in.read();

4 个答案:

答案 0 :(得分:0)

最简单的方法是在目标字上使用Java正则表达式。因此,每当用户输入一个字母时,您就会在正则表达式匹配中查找该字母。该匹配将返回匹配字符的索引,然后您可以使用该索引替换字符串__版本中的字母。

...    
    listOfWords[9] = "zapping";
    Random generator = new Random();
    int lineNumber = generator.nextInt(9);
    disguisedWord = listOfWords[lineNumber];
    char[] hidden = disguisedWord.replaceAll("*","_").toCharArray();
}

public void makeGuess() throws IOException {
    System.out.println("Your word is " + disguisedWord.length() + " letters long.");
    System.out.println("Feel free to guess a letter.");
    String guess = System.in.read();

    Pattern pat = new Pattern(guess);
    Matcher mat = pat.matcher(disguisedWord);
    while (mat.find()) {
        int start = mat.start();
        hidden[start] = guess.toCharArray()[0];
    }
}

答案 1 :(得分:0)

String ghost = "ghost";
String input = "o";
for (int i = 0; i < ghost.length(); i++) {
    if (String.valueOf(ghost.charAt(i)).equalsIgnoreCase(input)) {
        System.out.print(input + " ");
    } else {
        System.out.print("_ ");
    }
}

您可以使用三元运算符简化 if语句:

System.out.print(String.valueOf(ghost.charAt(i)).equalsIgnoreCase(input) ? input + " " : "_ ");

答案 2 :(得分:0)

为什么没有另一个真值/假值数组来标记猜测的字母以及哪些字母仍未知?我不认为使用正则表达式和字符串替换是一种简单的方法来让刽子手工作,特别是当他们猜到另一个字母时。

也许这样的事情。

String answer = "someword";
boolean[] knownLetters = new boolean[answer.length()];
for (int i = 0; i < answer.length(); i++) {
    if(knownLetters[i]) {
        System.out.print(answer.charAt(i));
    } else {
        System.out.print("_");
    }
}
System.out.println("");

答案 3 :(得分:0)

我认为最简单的方法是将状态存储在变量中,并通过循环覆盖现实世界来替换匹配的字符。

private String word; 
private char[] state;

public void guess(char input){
    for (int i = 0; i < word.length(); i++) {
        if (word.toLowerCase().charAt(i) == input){
            state[i] = word.charAt(i);
        }
    }
}

之后您可以打印“州”的内容。