检查字符串中使用的特定字符?

时间:2014-02-16 17:55:08

标签: java regex string

更具体地说,我想知道是否在单词中使用某些字符。例如,该程序将检测输入中是否仅使用 <{strong> A BC。到目前为止我有这个,但显然这是一种非常强力的方法。

有更有效的方法吗? (我还应该提到这个程序不能正常工作,因为我需要添加更多条件)

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();
}

2 个答案:

答案 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