所以我被赋予了刽子手作为一个项目,我应该用下划线替换所有字母。我的代码目前看起来像这样:
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){
}
有什么方法可以清理它,以免我重复自己吗?
答案 0 :(得分:2)
您可以使用正则表达式替换一个调用中的所有字符:
input.replaceAll("[a-zA-Z]","_");
这将匹配任何小写或大写字母的字符,并用下划线替换它。您可以在Java here中了解有关正则表达式的更多信息。