有没有办法让我不那么乱?

时间:2016-11-17 21:05:18

标签: java eclipse project

所以我被赋予了刽子手作为一个项目,我应该用下划线替换所有字母。我的代码目前看起来像这样:

public static void prompt(){
    BufferedReader delta = new BufferedReader(new InputStreamReader(System.in));
//Prompts one user for puzzle
    //must have at least one word
    //no more than eight words
    //cannot be an empty string
    //puzzle
            //letters are made as underscores
            // spaces and special characters are displayed as normal
    boolean valid = false;
    while(!valid){
    System.out.println("Player 1, please enter a word or a phrase.");
    System.out.println("Note: There cannot be more than eight words.");
    try{
    String input = delta.readLine();
    if(input.isEmpty()){
        valid = false;
        System.out.println("Your answer is invalid");
    }else{
        valid = true;
    }
    input = input.replaceAll("a", "_");
    input = input.replaceAll("b", "_");
    input = input.replaceAll("c", "_");
    input = input.replaceAll("d", "_");
    input = input.replaceAll("e", "_");
    input = input.replaceAll("f", "_");
    input = input.replaceAll("g", "_");
    input = input.replaceAll("h", "_");
    input = input.replaceAll("i", "_");
    input = input.replaceAll("j", "_");
    input = input.replaceAll("k", "_");
    input = input.replaceAll("l", "_");
    input = input.replaceAll("m", "_");
    input = input.replaceAll("n", "_");
    input = input.replaceAll("o", "_");
    input = input.replaceAll("p", "_");
    input = input.replaceAll("q", "_");
    input = input.replaceAll("r", "_");
    input = input.replaceAll("s", "_");
    input = input.replaceAll("t", "_");
    input = input.replaceAll("u", "_");
    input = input.replaceAll("v", "_");
    input = input.replaceAll("w", "_");
    input = input.replaceAll("x", "_");
    input = input.replaceAll("y", "_");
    input = input.replaceAll("z", "_");

    input = input.replaceAll("A", "_");
    input = input.replaceAll("B", "_");
    input = input.replaceAll("C", "_");
    input = input.replaceAll("D", "_");
    input = input.replaceAll("E", "_");
    input = input.replaceAll("F", "_");
    input = input.replaceAll("G", "_");
    input = input.replaceAll("H", "_");
    input = input.replaceAll("I", "_");
    input = input.replaceAll("J", "_");
    input = input.replaceAll("K", "_");
    input = input.replaceAll("L", "_");
    input = input.replaceAll("M", "_");
    input = input.replaceAll("N", "_");
    input = input.replaceAll("O", "_");
    input = input.replaceAll("P", "_");
    input = input.replaceAll("Q", "_");
    input = input.replaceAll("R", "_");
    input = input.replaceAll("S", "_");
    input = input.replaceAll("T", "_");
    input = input.replaceAll("U", "_");
    input = input.replaceAll("V", "_");
    input = input.replaceAll("W", "_");
    input = input.replaceAll("X", "_");
    input = input.replaceAll("Y", "_");
    input = input.replaceAll("Z", "_");

    System.out.println(input);

    }catch(IOException IOE){

    }

有什么方法可以清理它,以免我重复自己吗?

1 个答案:

答案 0 :(得分:2)

您可以使用正则表达式替换一个调用中的所有字符:

input.replaceAll("[a-zA-Z]","_");

这将匹配任何小写或大写字母的字符,并用下划线替换它。您可以在Java here中了解有关正则表达式的更多信息。