0

だから私は単純なホイール オブ フォーチュン タイプのゲームを作ろうとしています。しかし、私は始める前に深刻な問題を抱えています。ユーザーが文字の1つを推測するまで表示されないように、フレーズを「*」に変換しようとしています。これが私がこれまでに持っているものです:

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 noDigits = CharMatcher.JAVA_DIGIT.replaceFrom(string, "*"); // star out all digits
于 2013-02-17T18:26:20.023 に答える
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**

少し説明:

replaceAllmethod は 2 つの引数を取ります:文字列のどの部分を置き換えるかを記述する正規表現と、2 番目の引数は置換です。そのメソッドの結果は新しい文字列になるため、元の文字列は変更されません。

正規表現として[]、否定を含む文字のクラスを使用し[^...]たため、このクラスにない任意の文字と一致します。最初に追加したユーザー文字に加え\\sて、これはすべての空白 (通常の空白、タビュレーター、改行など) を表しているため、*.

'置き換えたくない場合は、その「セット」に追加することもできます。

于 2013-02-17T18:14:42.393 に答える