In Java wird die Methode split() verwendet, um eine Zeichenfolge basierend auf einem angegebenen Trennzeichen in Teilzeichenfolgen zu unterteilen. Beim Versuch, eine Zeichenfolge anhand des Literalpunktzeichens „.“ aufzuteilen, wird jedoch möglicherweise eine ArrayIndexOutOfBoundsException ausgelöst.
Um dieses Problem zu veranschaulichen, betrachten Sie den folgenden Code:
String filename = "D:/some folder/001.docx"; String extensionRemoved = filename.split(".")[0];
Im Der obige Code besteht darin, die Dateierweiterung zu entfernen, indem der Dateiname durch einen Punkt geteilt wird. Die Ausführung dieses Codes führt jedoch zu einer Ausnahme.
Umgekehrt funktioniert der folgende Code korrekt:
String driveLetter = filename.split("/")[0];
Dies liegt daran, dass die Methode split() „.“ interpretiert. als Platzhalterzeichen, das mit jedem Zeichen in der Zeichenfolge übereinstimmt. Um den Literalpunkt zu teilen, ist es notwendig, ihn mit einem Backslash zu maskieren:
String extensionRemoved = filename.split("\.")[0];
Durch das Escapezeichen des Punkts geben wir an, dass wir nach dem Literalzeichen und nicht nach dem Platzhalter teilen möchten. Es ist wichtig zu beachten, dass das Backslash-Zeichen selbst ein Sonderzeichen in Regex ist und daher auch mit einem anderen Backslash maskiert werden muss.
Außerdem ist es bei der Aufteilung nach einem Punkt wichtig, den Randfall wo zu berücksichtigen Der Dateiname ist leer oder besteht nur aus einem Punkt. Wenn Sie versuchen, eine solche Zeichenfolge zu teilen, ohne den limit-Parameter der split()-Methode zu verwenden, kann es zu einer ArrayIndexOutOfBoundsException kommen. Um dies zu verhindern, verwenden Sie einen negativen Wert für den Grenzwertparameter:
String extensionRemoved = filename.split("\.", -1)[0];
Indem Sie den Grenzwert auf einen negativen Wert festlegen, deaktivieren Sie das Entfernen abschließender Leerzeichen aus dem resultierenden Array und stellen so sicher, dass Sie immer ein gültiges erhalten Index auch für leere oder einzelne Zeichenketten.
Das obige ist der detaillierte Inhalt vonWie teile ich einen Java-String korrekt mit einem Punkt (.) als Trennzeichen auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!