src/share/classes/java/lang/String.java

Print this page

        

*** 1750,1772 **** 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; --- 1750,1778 ---- if (targetCount == 0) { return fromIndex; } char first = target[targetOffset]; + char second = 0; + if (targetCount != 1) { + second = target[targetOffset + 1]; + } 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); } ! if (targetCount == 1) { ! return (i <= max) ? i - sourceOffset : -1; ! } /* Found first character, now look at the rest of v2 */ ! if (i <= max && source[i + 1] == second) { ! int j = i + 2; ! int end = i + targetCount; ! for (int k = targetOffset + 2; j < end && source[j] == target[k]; j++, k++); if (j == end) { /* Found whole string. */ return i - sourceOffset;