如何将字符串的字符更改为“*”

时间:2013-02-17 18:00:45

标签: java

所以我试图制作一个简单的财富类型游戏。但我有一个严重的问题开始。我只是试图将我的短语转换为“*”,以便在用户猜出其中一个字母之前无法看到它。这是我到目前为止所做的:

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



    public Puzzle(String solution)
    {

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

    }
}

3 个答案:

答案 0 :(得分:0)

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

String hideSolution = solution.replaceAll(".", "-");

答案 1 :(得分: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方法有两个参数:正则表达式,它描述了应该替换String的哪个部分,第二个参数是替换。该方法的结果是新String,因此不会更改原始String。

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

您可能还想将*添加到"设置"如果你不想替换它。

答案 2 :(得分:0)

使用guava库

示例:

String noDigits = CharMatcher.JAVA_DIGIT.replaceFrom(string, "*"); // star out all digits