0

所以我正在尝试制作一个简单的命运之轮类型的游戏。但我有一个严重的问题开始。我只是想将我的短语转换为“*”,以便在用户猜测其中一个字母是什么之前看不到它。这是我到目前为止所拥有的:

public class Puzzle
{
    private String solution="DOG PILE";
    private StringBuilder puzzle;



    public Puzzle(String solution)
    {

        int startindex=puzzle.indexOf(solution);
        puzzle.replace(startIndex, endIndex, "-");

    }
}
4

3 回答 3

0

使用正则表达式和替换方法:

String hideSolution = solution.replaceAll(".", "-");
于 2013-02-17T18:04:35.220 回答
0

你可以试试这样的

public static String hide(String data, StringBuilder charactersToShow) {
    return data.replaceAll("[^\\s" + charactersToShow.toString() + "]", "*");
}

public static void main(String[] args) throws Exception {
    StringBuilder gueses = new StringBuilder();
    String solution = "DOG PILE";

    System.out.println(hide(solution, gueses));//

    gueses.append('D');
    System.out.println(hide(solution, gueses));

    gueses.append('I');
    System.out.println(hide(solution, gueses));
}

输出:

*** ****
D** ****
D** *I**

小解释

replaceAll方法有两个参数:描述字符串哪一部分应该被替换的正则表达式,第二个参数是替换。该方法的结果是新字符串,因此不会更改原始字符串。

作为正则表达式,我使用了[]带否定的字符类,[^...]因此它将匹配不在该类中的任何字符。除了我\\s在开头添加的用户字符之外,因为它代表每个空格(普通空格、制表符、换行符等),因为您可能不想将它们替换为*.

'如果您不想替换它,您可能还想添加到该“集合”中。

于 2013-02-17T18:14:42.393 回答
0

使用番石榴库

例子:

String noDigits = CharMatcher.JAVA_DIGIT.replaceFrom(string, "*"); // star out all digits
于 2013-02-17T18:26:20.023 回答