2013-02-17 64 views
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, "-"); 

    } 
} 
+3

什麼是你所面臨的問題? – 2013-02-17 18:02:00

+0

嗯......你永遠不會聲明endIndex變量。 – w4etwetewtwet 2013-02-17 18:03:07

+0

'solution.replaceAll(「。」,「*」)''? – sp00m 2013-02-17 18:03:54

回答

0

使用正則表達式和替換方法:

String hideSolution = solution.replaceAll(".", "-"); 
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不會被改變。

由於正則表達式我使用了一類字符[]與否定[^...]因此它將匹配任何不屬於此類的字符。除了用戶角色之外,我還在開頭添加了\\s,因爲它代表了每個空白區域(普通空間,製表符,新行等),因爲您可能不想用*替換它們。

如果您不想替換它,您可能還想將'添加到該「set」中。

0

使用番石榴庫

例如:

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