你可以嘗試這樣的
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」中。
什麼是你所面臨的問題? – 2013-02-17 18:02:00
嗯......你永遠不會聲明endIndex變量。 – w4etwetewtwet 2013-02-17 18:03:07
'solution.replaceAll(「。」,「*」)''? – sp00m 2013-02-17 18:03:54