所以我试图制作一个简单的财富类型游戏。但我有一个严重的问题开始。我只是试图将我的短语转换为“*”,以便在用户猜出其中一个字母之前无法看到它。这是我到目前为止所做的:
public class Puzzle
{
private String solution="DOG PILE";
private StringBuilder puzzle;
public Puzzle(String solution)
{
int startindex=puzzle.indexOf(solution);
puzzle.replace(startIndex, endIndex, "-");
}
}
答案 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