2

我有这个代码:

String[] whereyoufromarray = {"where", "you", "from"};

for (String whereyoufromstring : whereyoufromarray)
{
    if (value.contains(whereyoufromstring)) {
        //statement
    }
}

但我希望 if 仅在“value”包含数组中包含的所有单词时才执行语句,例如“你来自哪里?”。当前,如果 value 只有数组中的一个单词,则执行该语句。

我可以做到这一点,if (value.contains("where") && value.contains("you") && value.contains ("from"))但这似乎是不必要的长。必须有一个使用我缺少的数组的解决方法。

好吧,那是什么?

ps:很抱歉语法不好。我正在遭受睡眠剥夺。

4

3 回答 3

2
String[] whereyoufromarray = {"where", "you", "from"};

boolean valueContainsAllWordsInArray = true;
for (String whereyoufromstring : whereyoufromarray) {

    // If one word wasn't found, the search is over, break the loop
    if(!valueContainsAllWordsInArray) break;

    valueContainsAllWordsInArray = valueContainsAllWordsInArray &&
                                   value.contains(whereyoufromstring);

}

// valueContainsAllWordsInArray is now assigned to true only if value contains
// ALL strings in the array
于 2013-06-12T20:58:39.930 回答
2

对于这样的情况,我通常会实现一个函数来进行测试。我们称它为containsAll()

public static boolean containsAll(String[] strings, String test)
{
    for (String str : strings)
        if (!test.contains(str))
            return false;
    return true;
}

现在你就做

if (containsAll(whereyoufromarray, value))
    //statement
于 2013-06-12T21:04:49.800 回答
0
 String[] whereyoufromarray = {"where", "you", "from"};
 int arrayLength = whereyoufromarray.length;
 int itemCount = 0;
 for(String whereyoufromstring : whereyoufromarray)
 {
    if(value.contains(whereyoufromstring))
    {
        itemCount++; 
    }
 }
 if (itemCount == arrayLength){
    //do your thing here   
 }

粗略的想法。我没有我的 IDE 来证明这一点,但基本上你可以将一个计数器设置为 = 已知数组的长度,然后检查数组中的每个值以查看它是否包含匹配项。如果包含,则增加另一个柜台。最后,测试您的计数器以查看它是否与数组的长度匹配,因此在您的示例中,如果 itemCount= 3,则所有值都匹配。如果它是 2,那么将丢失一个,并且您的方法将无法执行。

于 2013-06-12T21:00:24.280 回答