Отфильтровать массив строк из другого - PullRequest
2 голосов
/ 28 апреля 2011

я немного запутался, связанный со строковой функцией. У меня есть один массив строк.Привет "появляется.

Ответы [ 5 ]

2 голосов
/ 28 апреля 2011
   /**
     * This method searches for key in the array of String , starts looking from fromIndexSpecified
     * @param source
     * @param key
     * @param fromIndex
     * @return
     */
    private static int findIndexOfKey(String[] source, String key, int fromIndex) {

        if (fromIndex > source.length) {
            return -1;// invalid arg ..can also throw IlligleArgumentException
        }
        for (int index = fromIndex; index < source.length; index++) {
            if (source[index].indexOf(key) > -1) {
                return index;//found..!
            }
        }
        return -1; //no match found
    }
1 голос
/ 28 апреля 2011

Итерация по второму массиву, проверка каждый раз:

for(int i = 0; i < Array2.length; i++) {
if(Array2[i].contains(Array1[0]) {
 //your logic here
System.out.println("Found match at position " + i);

}
}

Редактировать: убедитесь, что в вашем конкретном случае могут возникать исключения Null-Pointer-Exceptions. Возможно добавить

if(Array2[i] != null)
1 голос
/ 28 апреля 2011

A String[] на самом деле является массивом строк.Таким образом, он может содержать несколько строк.Например:

String[] stringArray = new String[2];
stringArray[0] = "My String 1";
stringArray[1] = "My String 2";

Если вы хотите узнать первый индекс массива String, который содержит подстроку, вам нужно сделать что-то вроде:

   int findFirst(String subString, String[] stringArray) {
        for (int i = 0; i < stringArray.length; i++) {
            if (stringArray[i].contains(subString)) {
                return i;
            }
        }
        // indicates that no String in the array contained the subString
        return -1;
    }

И вот путьиспользовать метод:

int firstIndex = findFirst("String 2", stringArray);
1 голос
/ 28 апреля 2011

Вам нужно было бы перебрать элементы в массиве Array2 и сделать сравнение подстрок:

private int findIndexOfSubstring(array, target) {
   for (int i=0; i<array.size(); i++) {
      if array[i].indexOf(target)>-1 return i; //element of Array2 contains target in it.
   }
   return -1; //no match found
}

//somewhere else
String Array1[]=new String[10];
Array1[0]="Hello";

String Array2[]=new String[10];
Array2[0]="Hello my world";
Array2[1]="Hi buddy";

int answer = findIndexOfSubstring(Array2, Array1[0]);
0 голосов
/ 21 мая 2011

Вы можете использовать метод indexOf из Apache Commons ArrayUtils class.

Использование:

String[] array1 = new String[10];
array1[0] = "Hello";

String[] array2 = new String[10];
array2[0] = "Hello my world";
array2[1] = "Hi buddy";

int index = ArrayUtils.indexOf(array2, array1[0]);
...