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;