2013-07-17 4 views
-1

Без для() петли, такие какПроверка, если строка содержит любой из строк в массиве

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

Я хочу, чтобы иметь возможность проверить, если строка содержит любой из строк в массиве во всем мире. Так что для() петель не работает.

Я попытался

int arraylength; 
while(arraylength < array.length()){ 
arraylength++; } 

if(string.contains(array[arraylength]) {} 

но это возвращает ошибку.

редактировать:

Чтобы очистить его:

Я хочу сделать что-то вроде

if (string.contains(**code that checks all strings in an array**) 

Так что я могу проверить, если строка содержит любой из строк в массиве. Как я уже упоминал, для циклов НЕ работают, потому что я хочу иметь возможность выполнять строку кода выше ЛЮБОГО в классе.

+3

Петли должны быть использованы где-то. Вы можете использовать 'while', но не' for'? –

+5

Что именно вы подразумеваете под «глобально» здесь? Ваш вопрос очень неясен. –

+1

Спасибо за очень конструктивный ответ на помощь Луиджи. –

ответ

2

Вы можете сделать это следующим образом:

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); 
0

Дайте это попробовать

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++; 
} 
1

использования Try lambdaj (скачать here, website) и Hamcrest (скачать here, website), это библиотеки очень мощный для управления коллекциями, следующий код очень прост и отлично работает:

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 

принципе, в одной строке вы можете найти строку в любом strinf массива:

boolean match = select(list, having(on(String.class), containsString(strTofind))).size()>0; 

С этой библиотеки вы можете решить свою задачу в одной строке. Вы должны добавить в свой проект: hamcrest-all-1.3.jar и lambdaj-2.4.jar Надеюсь, это будет полезно.

Примечание: в моем примере я использую список затем, если вы хотите использовать массив: Arrays.asList(array) (массив строк [])

1
// For loop 
    for (String search : array) { 
     if (message.contains(search)) { 
      return true; 
     } 
    } 

    return false; 

    ... 

    // Lambdas 
    return Arrays.stream(array).anyMatch(search -> message.contains(search)); 
Смежные вопросы