Java Array Last Index Of lastIndexOf(byte[] source, byte[] match)

Here you can find the source of lastIndexOf(byte[] source, byte[] match)

Description

Returns the index in the source array where the last occurrence of the specified byte pattern is found

License

Educational Community License

Parameter

Parameter Description
source Byte array to examine
match Byte array to locate in <code>source</code>

Return

Index of the last matching character (-1 if no match)

Declaration

public static int lastIndexOf(byte[] source, byte[] match) 

Method Source Code

//package com.java2s;
/**********************************************************************************
 *
 * Copyright (c) 2003, 2004, 2007, 2008 The Sakai Foundation
 *
 * Licensed under the Educational Community License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *       http://www.opensource.org/licenses/ECL-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.//from   w ww.  java  2 s  .c  o  m
 *
 **********************************************************************************/

public class Main {
    /**
     * Returns the index in the source array where the last occurrence
     * of the specified text (a String, converted to a byte array) is found
     *
     * @param source Byte array to examine
     * @param matchString String to locate in <code>source</code>
     * @return Index of the first matching character (-1 if no match)
     */
    public static int lastIndexOf(byte[] source, String matchString) {
        return lastIndexOf(source, matchString.getBytes());
    }

    /**
     * Returns the index in the source array where the last occurrence
     * of the specified byte pattern is found
     *
     * @param source Byte array to examine
     * @param match Byte array to locate in <code>source</code>
     * @return Index of the last matching character (-1 if no match)
     */
    public static int lastIndexOf(byte[] source, byte[] match) {

        if (source.length < match.length) {
            return -1;
        }

        for (int i = (source.length - match.length); i >= 0; i--) {
            if (startsWith(source, i, match)) {
                return i;
            }
        }
        return -1;
    }

    /**
     * Copies bytes from the source byte array to the destination array
     *
     * @param source The source array
     * @param srcBegin Index of the first source byte to copy
     * @param srcEnd Index after the last source byte to copy
     * @param destination The destination array
     * @param dstBegin The starting offset in the destination array
     */
    public static void getBytes(byte[] source, int srcBegin, int srcEnd,
            byte[] destination, int dstBegin) {
        System.arraycopy(source, srcBegin, destination, dstBegin, srcEnd
                - srcBegin);
    }

    /**
     * Does this byte array begin with match array content?
     *
     * @param source Byte array to examine
     * @param match Byte array to locate in <code>source</code>
     * @return true If the starting bytes are equal
     */
    public static boolean startsWith(byte[] source, byte[] match) {
        return startsWith(source, 0, match);
    }

    /**
     * Does this byte array begin with match array content?
     *
     * @param source Byte array to examine
     * @param offset An offset into the <code>source</code> array
     * @param match Byte array to locate in <code>source</code>
     * @return true If the starting bytes are equal
     */
    public static boolean startsWith(byte[] source, int offset, byte[] match) {

        if (match.length > (source.length - offset)) {
            return false;
        }

        for (int i = 0; i < match.length; i++) {
            if (source[offset + i] != match[i]) {
                return false;
            }
        }
        return true;
    }
}

Related

  1. lastIndexOf(byte[] ary, byte value)
  2. lastIndexOf(byte[] bytes, int pos, int len, byte b)
  3. lastIndexOf(byte[] data, int offset, int length, byte val)
  4. lastIndexOf(byte[] pattern, byte[] block)
  5. lastIndexOf(byte[] s, char c)
  6. lastIndexOf(char[] toBeFound, char[] array)
  7. lastIndexOf(char[] toBeFound, char[] array)
  8. lastIndexOf(final byte[] reference, final byte[] query)
  9. lastIndexOf(final byte[] str, int startIndex, int endIndex, final byte ch)