Java - 以相反的方式使用“.contains”

时间:2017-11-21 19:24:30

标签: java contains

我希望能够打印一个不包含单词“Java”,“Code”或“String”的字符串,但我不确定如何实现这一点,因为我认为这可以通过使用' ! (不)。然而,情况并非如此,因为尽管包含了我想要禁止的字词,仍然会打印字符串。

非常感谢任何关于如何实现这一目标的建议。感谢提前。

YYACCEPT

3 个答案:

答案 0 :(得分:2)

  

我认为这可以通过使用'!'来实现(NOT)

是的。您还没有正确地应用它来适应您的情况:

你从这句话开始:

()

检查输入是否包含中的任何,并且您希望否定此声明。

您可以将整个语句包装在括号中(!(userInput6.toLowerCase().contains("java") || userInput6.toLowerCase().contains("code") || userInput6.toLowerCase().contains("string")) )并取消

a || b

或应用DeMorgan's law来否定断言,其中指出!a && !b的否定是!userInput6.toLowerCase().contains("java") && !userInput6.toLowerCase().contains("code") && !userInput6.toLowerCase().contains("string")

因此,正如评论中所述的Carcigenicate一样,您需要

||

代替。

您的语句只是检查字符串是否包含这些子字符串中的至少一个。这意味着只有当字符串包含所有这些字符串时,检查才会失败。对于true,如果任何操作数为true,则整个语句为.toLowerCase

此外,mkobit指出您要检查的字符串应该完全小写。否则,您正在检查false d字符串是否包含大写字符 - 总是 if

更容易想到的方法可能是反转您的if (userInput6.toLowerCase().contains("Java") || userInput6.toLowerCase().contains("Code") || userInput6.toLowerCase().contains("String")) { System.out.println("Your string contains 'Java, 'Code' or 'String'."); } else { System.out.println("I see your does not string contain 'Java', 'Code' or 'String, here is your string:- " + userInput6); } 声明:

System.OutOfMemoryException: Out of memory.

答案 1 :(得分:0)

  • 由于您正在使用逻辑OR,只要您的viewModel.user().observe(this, x -> { if (x != null && x.data != null) { viewModel.items(x.data.token).observe(this, result -> { // use result }); } }); 检查为真,则整个条件为真。您希望所有检查都为真,因此您需要使用逻辑AND(contains)代替

  • 正如@mk指出的,你还有另一个问题。看看:

    &&

    您可以小写字符串,然后针对包含大写字符的字符串进行检查。您刚刚删除了全部大写,因此检查将始终失败。

答案 2 :(得分:-1)

另外,你可以使用regexp:)

boolean notContains(String in) {
    return !Pattern.compile(".*((java)|(code)|(string)).*")
                   .matcher(in.toLowerCase())
                   .matches();
}

或者只是内联它:

System.out.println("Type in an input, plez?");
String userInput6 = inputScanner.nextLine();
if (!Pattern.compile(".*((java)|(code)|(string)).*")
            .matcher(userInput6.toLowerCase())
            .matches()) {
    System.out.println("I see your does not string contain 'Java', 'Code' or 'String, here is your string:- " + userInput6);
} else {
    System.out.println("Your string contains 'Java, 'Code' or 'String'.");
}