Description
org.apache.commons.lang3.StringUtils.java
int found = 0; int index = lastIndex ? str.length() : INDEX_NOT_FOUND; do { if (lastIndex) { index = CharSequenceUtils.lastIndexOf(str, searchStr, index - 1); } else { index = CharSequenceUtils.indexOf(str, searchStr, index + 1); } if (index < 0) { return index; } found++; } while (found < ordinal);
Should it be:
org.apache.commons.lang3.StringUtils.java
private static int ordinalIndexOf(final CharSequence str, final CharSequence searchStr, final int ordinal, final boolean lastIndex) { // if (str == null || searchStr == null || ordinal <= 0) { // return INDEX_NOT_FOUND; // } // if (searchStr.length() == 0) { // return lastIndex ? str.length() : 0; // } // int found = 0; // int index = lastIndex ? str.length() : INDEX_NOT_FOUND; // do { // if (lastIndex) { // index = CharSequenceUtils.lastIndexOf(str, searchStr, index - 1); // } else { // index = CharSequenceUtils.indexOf(str, searchStr, index + 1); // } // if (index < 0) { // return index; // } // found++; // } while (found < ordinal); // return index; if (str == null || searchStr == null || ordinal <= 0) { return INDEX_NOT_FOUND; } if (searchStr.length() == 0) { return lastIndex ? str.length() : 0; } final int searchStrLen = searchStr.length(); int index = lastIndex ? str.length() : 0; for (int found = 0; index >= 0;) { if (lastIndex) { index = CharSequenceUtils.lastIndexOf(str, searchStr, index); } else { index = CharSequenceUtils.indexOf(str, searchStr, index); } if (index < 0) { return INDEX_NOT_FOUND; } if (++found >= ordinal) { break; } index = lastIndex ? index - searchStrLen : index + searchStrLen; } return index; }