Escape-Sequenz verwenden, um Java-Strings an einem Literalpunkt aufzuteilen
Beim Versuch, einen Java-String an einem Literalpunkt (".") zu teilen Bei Verwendung der Methode split() ist es wichtig, den Punkt mit der Escape-Sequenz „\“ zu maskieren. Diese Aktion ist erforderlich, da die Methode split() einen Punkt ohne Escapezeichen als regulären Ausdruck behandelt, der mit jedem Zeichen übereinstimmt, was zu unerwarteten Ergebnissen führen kann.
Betrachten Sie beispielsweise den folgenden Code:
String filename = "D:/some folder/001.docx"; String extensionRemoved = filename.split(".")[0];
Dieser Code löst eine ArrayIndexOutOfBoundsException aus, da die Eingabezeichenfolge nur ein einzelner Punkt ist. Das Teilen eines Punkts durch einen Punkt führt zu einem leeren Array, und da die Methode „split()“ nachfolgende leere Zeichenfolgen aus dem Ergebnis entfernt, wird ein leeres Array zurückgegeben.
Um dieses Problem zu beheben, muss der Punkt als maskiert werden folgt:
String extensionRemoved = filename.split("\\.")[0];
Durch die Verwendung der Escape-Sequenz „\“ geben wir an, dass wir teilen möchten auf dem literalen Punktzeichen, nicht auf irgendeinem Zeichen.
Es ist wichtig zu beachten, dass der doppelte Backslash erforderlich ist, um einen einzelnen Backslash im regulären Ausdruck zu erstellen, da ein einzelner Backslash in Java-String-Literalen als Escape-Zeichen behandelt wird.
Durch Befolgen dieses Ansatzes können Sie Java-Strings effektiv an einem Literalpunkt aufteilen, wodurch ArrayIndexOutOfBoundsExceptions verhindert und genaue Ergebnisse sichergestellt werden.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3