Es ist ein bisschen von „aussehen, bevor Sie springen“, aber was Sie wollen, ist zu tun:
- Überprüfen Sie die Indexposition der einzelnen Strings in einem anderen.
- Wenn (und nur wenn) die Indexposition vorhanden ist, überprüfen Sie, ob die Teilzeichenfolge von diesem Indexpunkt bis zum Ende übereinstimmt.
- Andernfalls wird false zurückgegeben.
Wenn Sie irgendeine Art von Subtraktion durchführen, erhalten Sie nicht die richtige Größe der Teilzeichenfolge; Das heißt, wenn Sie die Länge der Zeichenfolge, die Sie überprüfen, subtrahieren, erhalten Sie nur ein Zeichen.
public static boolean startOther(String left, String right) {
if (left == null || right == null || left.equals(right)) {
return false;
}
int rightSubstringInLeft = left.indexOf(right);
int leftSubstringInRight = right.indexOf(left);
if(rightSubstringInLeft != -1) {
return left.substring(rightSubstringInLeft).equals(right);
} else if(leftSubstringInRight != -1) {
return right.substring(leftSubstringInRight).equals(left);
} else {
return false;
}
}
Hier ist eine optimierte Form des gleichen Codes, wie in den Kommentaren hervorgehoben. Grundsätzlich ist es das gleiche, aber Sie müssen keine weitere equals-Prüfung für die Teilzeichenfolge durchführen, da lastIndexOf
Ihnen immer nur den letzten Index der gesamten Teilzeichenfolge geben würde.
public static boolean startOther(String left, String right) {
if (left == null || right == null || left.equals(right)) {
return false;
}
int rightSubstringInLeft = left.lastIndexOf(right);
int leftSubstringInRight = right.lastIndexOf(left);
if(rightSubstringInLeft != -1) {
return rightSubstringInLeft == left.length() - right.length();
} else if(leftSubstringInRight != -1) {
return leftSubstringInRight == right.length() - left.length();
} else {
return false;
}
}
Hinweis: http://docs.oracle.com/javase/7/docs/api/java/lang/String. html # endsWith% 28java.lang.String% 29 –
In Bezug auf den Fehler: wenn a nicht enthält b, pos ist -1, und Sie tun also astring (len + 1), die so für ein fragt Index außerhalb der Grenzen der Zeichenfolge. Ein Debugger hätte das sofort gezeigt. Sie sollten es lernen. –