更具体地说,我想知道仅是否在单词中使用某些字符。例如,该程序将检测输入中是否仅使用 <{strong> A
B
和C
。到目前为止我有这个,但显然这是一种非常强力的方法。
有更有效的方法吗? (我还应该提到这个程序不能正常工作,因为我需要添加更多条件)
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
if(str.contains("I") && str.contains("O") && str.contains("S") && str.contains("H") && str.contains("Z") && str.contains("X") && str.contains("N")){
System.out.println("YES");
}else if(str.contains("I") && str.contains("O") && str.contains("S") && str.contains("H") && str.contains("Z") && str.contains("X")){
System.out.println("YES");
}else if(str.contains("I") && str.contains("O") && str.contains("S") && str.contains("H") && str.contains("Z")){
System.out.println("YES");
}else if(str.contains("I") && str.contains("O") && str.contains("S") && str.contains("H")){
System.out.println("YES");
}else if(str.contains("I") && str.contains("O") && str.contains("S")){
System.out.println("YES");
}else if(str.contains("I") && str.contains("O")){
System.out.println("YES");
}else if(str.contains("I")){
System.out.println("YES");
}else{
System.out.println("NO");
}
in.close();
}
答案 0 :(得分:5)
您应该使用正则表达式来执行此操作。见Pattern。或者,如果它保持这么简单,你可以像这样检查:
if( str.matches( "[ABC]+" ) ) {
System.out.println("YES");
}
答案 1 :(得分:0)
你可以使用这样的正则表达式:
^[ABC]+$
确保输入仅包含字母A OR B OR C
^ assert position at start of the string
[ABC]+ match a single character present in the list below
Quantifier: Between one and unlimited times, as many times as possible
[ABC] a single character in the list (A or B or C) literally (case sensitive)
$ assert position at end of the string