繁体   English   中英

仅3个特定字词的字符串匹配

[英]String match of only 3 specific words

我希望正则表达式匹配只包含单词A,I和D且没有任何顺序或排序的字符串

还:如果字符串的字母不是,则不进入if

我尝试过|| 和其他符号,但仍然无法理解

不必是正则表达式,我只是想找到一种解决方法

String message = "AIDDDAAIDAAA"
if(message.matches("(A|D|I)")){

         System.out.println("Matches");
}

您可以在方括号内使用所有感兴趣的字符。 要匹配出现在方括号中的这些字符的一个或多个,请在其后附加+ message字符串应完全仅由这些字符组成,才能将其视为匹配项。

尝试这个。

String message  = "ADAIAIAIAIAIADDDAI";
if(message .matches("[ADI]+")) {
    System.out.println("Matches");
}

既然你问“字”,我想ADI站在了字与一个以上的字母,并且这就是为什么你不使用字符类的reaason [ADI] 您只需要添加+因为该message包含更多单词。

    String message = "AIDDDAAIDAAA";
    if (message.matches("(A|D|I)+")) {
        System.out.println("Matches");
    }

scigs答案也可以。

您可以使用字符串替换执行类似的操作:

String message = "AIDDDAAIDAAA";
message = message.replace("A","")
    .replace("I","")
    .replace("D","");
if (message.equals("")) {
    //do your thing
}

您可以只检查组成字符串的每个字符:

String message = "AIDDDAAIDAAA";
boolean matches = true;
for (int i=0; i<message.length(); i++;){
    if (message.charAt(i)!='A' && message.charAt(i)!='I' && message.charAt(i)!='D'){
        matches = false;
        break;
    }
}
if (matches) System.out.println("Matches");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM