Java 检查字符串是否包含数组中的任何字符串

Java 检查字符串是否包含数组中的任何字符串,java,arrays,Java,Arrays,没有for()循环,例如 for(int j =0; j < array.length; j++) { } 所以我可以检查字符串是否包含数组中的任何字符串。正如我所提到的,for循环不起作用,因为我希望能够在类中的任何位置执行上面的代码行。您可以这样做: String veryHugeString = ...; String[] words = new String[] { ... }; boolean foundAtLeastOne = false;

没有for()循环,例如

 for(int j =0; j < array.length; j++)
                {
}

所以我可以检查字符串是否包含数组中的任何字符串。正如我所提到的,for循环不起作用,因为我希望能够在类中的任何位置执行上面的代码行。

您可以这样做:

String veryHugeString = ...;
String[] words = new String[] { ... };
boolean foundAtLeastOne = false;
for (String word : words) {
   if (veryHugeString.indexOf(word) > 0) {
       foundAtLeastOne = true;
       System.out.println("Word: " + word + " is found");
       break;
   }
}

System.out.println("Found at least one : " + foundAtLeastOne);
试试这个

String longString = "This is a string.";
String[] stringArray = new String[]{"apple", "ball", "This", "cat"};
int index = 0;
while(index <stringArray.length){
    if(longString.contains(stringArray[index])){
        System.out.println("found: "+stringArray[index]);
    }
    index++;
}
String longString=“这是一个字符串。”;
String[]stringArray=新字符串[]{“苹果”、“球”、“这个”、“猫”};
int指数=0;
虽然(index请尝试使用lambdaj(下载)和hamcrest(下载),但此库对于管理集合非常强大,以下代码非常简单且工作完美:

import static ch.lambdaj.Lambda.having;
import static ch.lambdaj.Lambda.on;
import static ch.lambdaj.Lambda.select;
import static org.hamcrest.Matchers.containsString;
import java.util.Arrays;
import java.util.List;

public class Test2 {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("A","BB","DCA","D","x");
        String strTofind = "C";
        System.out.println("List: " + list.toString());
        boolean match = select(list, having(on(String.class), containsString(strTofind))).size()>0;
        System.out.println("The string " + strTofind + (!match?" not":"") + " exists");

        strTofind = "X";
        match = select(list, having(on(String.class), containsString(strTofind))).size()>0;
        System.out.println("The string " + strTofind + (!match?" not":"") + " exists");        
    }
}
基本上,您可以在一行中搜索数组中任何字符串:

boolean match = select(list, having(on(String.class), containsString(strTofind))).size()>0;
有了这些库,您可以在一行中解决您的问题。您必须添加到您的项目中:hamcrest-all-1.3.jar和lambdaj-2.4.jar希望这会有用

注意:在我的示例中,我使用了一个列表,如果您想使用数组:
Arrays.asList(array)
(数组是string[])

For循环:

for(字符串搜索:数组){
if(message.contains(搜索)){
返回true;
}
}
返回false;
兰博达斯:

返回Arrays.stream(array).anyMatch(message::contains);

循环必须在某个地方使用。您可以在
时使用
但不能在
时使用
?您所说的“全局”到底是什么意思这里?你的问题很不清楚。谢谢你非常有建设性的帮助回答Luiggi。@joe dacoolguy,Luiggi Mendoza是对的,没有理由for循环不起作用。另外,如果这就是while循环所做的全部代码,那么应该改为
arraylength=array.length()
Edit:取而代之的是,我的意思是,与其使用while循环,不如将while循环末尾的值赋值为
arraylelength
import static ch.lambdaj.Lambda.having;
import static ch.lambdaj.Lambda.on;
import static ch.lambdaj.Lambda.select;
import static org.hamcrest.Matchers.containsString;
import java.util.Arrays;
import java.util.List;

public class Test2 {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("A","BB","DCA","D","x");
        String strTofind = "C";
        System.out.println("List: " + list.toString());
        boolean match = select(list, having(on(String.class), containsString(strTofind))).size()>0;
        System.out.println("The string " + strTofind + (!match?" not":"") + " exists");

        strTofind = "X";
        match = select(list, having(on(String.class), containsString(strTofind))).size()>0;
        System.out.println("The string " + strTofind + (!match?" not":"") + " exists");        
    }
}
List: [A, BB, DCA, D, x]
The string C exists
The string X not exists
boolean match = select(list, having(on(String.class), containsString(strTofind))).size()>0;