Created
October 22, 2018 05:21
-
-
Save wszdwp/c8d5d206742171abc9d330e6c6c15e1b to your computer and use it in GitHub Desktop.
java open jdk
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Code shared by String and StringBuffer to do searches. The | |
| * source is the character array being searched, and the target | |
| * is the string being searched for. | |
| * | |
| * @param source the characters being searched. | |
| * @param sourceOffset offset of the source string. | |
| * @param sourceCount count of the source string. | |
| * @param target the characters being searched for. | |
| * @param targetOffset offset of the target string. | |
| * @param targetCount count of the target string. | |
| * @param fromIndex the index to begin searching from. | |
| */ | |
| static int indexOf(char[] source, int sourceOffset, int sourceCount, | |
| char[] target, int targetOffset, int targetCount, | |
| int fromIndex) { | |
| if (fromIndex >= sourceCount) { | |
| return (targetCount == 0 ? sourceCount : -1); | |
| } | |
| if (fromIndex < 0) { | |
| fromIndex = 0; | |
| } | |
| if (targetCount == 0) { | |
| return fromIndex; | |
| } | |
| char first = target[targetOffset]; | |
| int max = sourceOffset + (sourceCount - targetCount); | |
| for (int i = sourceOffset + fromIndex; i <= max; i++) { | |
| /* Look for first character. */ | |
| if (source[i] != first) { | |
| while (++i <= max && source[i] != first); | |
| } | |
| /* Found first character, now look at the rest of v2 */ | |
| if (i <= max) { | |
| int j = i + 1; | |
| int end = j + targetCount - 1; | |
| for (int k = targetOffset + 1; j < end && source[j] | |
| == target[k]; j++, k++); | |
| if (j == end) { | |
| /* Found whole string. */ | |
| return i - sourceOffset; | |
| } | |
| } | |
| } | |
| return -1; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment