Here you can find the source of lastIndexOfIgnoreCase(String s, String substr)
Parameter | Description |
---|---|
s | source string |
substr | substring to find |
public static int lastIndexOfIgnoreCase(String s, String substr)
//package com.java2s; public class Main { /**/* w w w . j av a 2s . c o m*/ * Finds last index of a substring in the given source string with ignored * case. * * @param s source string * @param substr substring to find * * @return last index of founded substring or -1 if substring is not found * @see #indexOfIgnoreCase(String, String, int) * @see #lastIndexOfIgnoreCase(String, String, int) */ public static int lastIndexOfIgnoreCase(String s, String substr) { return lastIndexOfIgnoreCase(s, substr, s.length(), 0); } /** * Finds last index of a substring in the given source string with ignored * case. * * @param s source string for examination * @param substr substring to find * @param startIndex starting index from where search begins * * @return last index of founded substring or -1 if substring is not found * @see #indexOfIgnoreCase(String, String, int) */ public static int lastIndexOfIgnoreCase(String s, String substr, int startIndex) { return lastIndexOfIgnoreCase(s, substr, startIndex, 0); } /** * Finds last index of a substring in the given source string with ignored * case in specified range. * * @param s source to examine * @param sub substring to find * @param startIndex starting index * @param endIndex end index * @return last index of founded substring or -1 if substring is not found */ public static int lastIndexOfIgnoreCase(String s, String sub, int startIndex, int endIndex) { int sublen = sub.length(); int srclen = s.length(); if (sublen == 0) { return startIndex > srclen ? srclen : (startIndex < -1 ? -1 : startIndex); } sub = sub.toLowerCase(); int total = srclen - sublen; if (total < 0) { return -1; } if (startIndex >= total) { startIndex = total; } if (endIndex < 0) { endIndex = 0; } char c = sub.charAt(0); mainloop: for (int i = startIndex; i >= endIndex; i--) { if (Character.toLowerCase(s.charAt(i)) != c) { continue; } int j = 1; int k = i + 1; while (j < sublen) { char source = Character.toLowerCase(s.charAt(k)); if (sub.charAt(j) != source) { continue mainloop; } j++; k++; } return i; } return -1; } /** * Finds last index of a character in the given source string in specified range [end, start] */ public static int lastIndexOfIgnoreCase(String s, char c, int startIndex, int endIndex) { int total = s.length() - 1; if (total < 0) { return -1; } if (startIndex >= total) { startIndex = total; } if (endIndex < 0) { endIndex = 0; } c = Character.toLowerCase(c); for (int i = startIndex; i >= endIndex; i--) { if (Character.toLowerCase(s.charAt(i)) == c) { return i; } } return -1; } /** * Finds the very last index of a substring from the specified array. It * returns an int[2] where int[0] represents the substring index and int[1] * represents position where substring was found. Returns <code>null</code> * if noting found. * * @param s source string * @param arr string array * * @return int[2] */ public static int[] lastIndexOfIgnoreCase(String s, String arr[]) { return lastIndexOfIgnoreCase(s, arr, s.length()); } /** * Finds the very last index of a substring from the specified array. It * returns an int[2] where int[0] represents the substring index and int[1] * represents position where substring was found. Returns <code>null</code> * if noting found. * * @param s source string * @param arr string array * @param fromIndex starting position */ public static int[] lastIndexOfIgnoreCase(String s, String arr[], int fromIndex) { int arrLen = arr.length; int index = -1; int last = -1; for (int j = 0; j < arrLen; j++) { int i = lastIndexOfIgnoreCase(s, arr[j], fromIndex); if (i != -1) { if (i > index) { index = i; last = j; } } } return last == -1 ? null : new int[] { last, index }; } }