Replace Text mit regulären Ausdrücken (aber erst beim letzten bestimmten Zeichen)

draig

Mitglied
Hi.

Ich habe ein kleines Problem.

Ich habe einen String, der ungefähr so aussieht "/home/marc/base.pbp" oder so "/base.pbp" (ohne Anführungstriche). Ich möchte nun, dass das hier abgetrennt wird: "base.pbp". Dieser Abschitt heißt aber nicht immer "base.pbp", er kann auch z.B. so heißen: "test.iso". Also somit möchte ich immer alles abschneiden, was nach dem letzen "/" kommt. Mein problem ist jetzt, dass ich nicht weiß, wie ich mit regulären Ausdrücken ausdrücke, dass erst alles ab den letzen "/" abschnitten wird.

Oder soll ich es mit substring und einer Schleife realisieren?
 
Java:
String path = "/home/marc/base.pbp";
int cut = path.lastIndexOf( "/" );
String file = path.substring( cut );
System.out.println( file );
Müsste so eigtl. laufen (habs jetzt nicht getestet)

Gruß
Tobias
 
So weit ist es das, was ich meine. Ich hatte mich nur ein bischen doof ausgedrückt. Ich möchte hinterher nicht /base.pbp ausgegeben haben, sondern das soll wegfallen und das davor möchte ich also String bekommen.
 
Hallo!

So?
Java:
        String path = "/home/marc/base.pbp";
        String basePath = path.substring(0,path.lastIndexOf("/"));
        System.out.println(basePath);

Gruß Tom
 
Ich habe es jetzt so gelöst:

Code:
        String scrTextFieldEboot = textFieldEboot.getText();
        
        int cut = scrTextFieldEboot.lastIndexOf( "/" );
        
        String srcEbootLast = scrTextFieldEboot.substring( cut );
        
        String srcEbootDirectory = scrTextFieldEboot.replaceAll(srcEbootLast, "");

Was ist denn die bessere Lösung und warum?
 
Toms Lösung ist besser als dein aus zwei Gründen:
1. Es ist schneller weil nur einmal ein Substring gemacht werden muss, der dann direkt genutzt werden kann. Du musst den substring noch weiterverarbeiten.
2. Stell dir vor du hast eine Datei ohne Dateiendung:
Java:
String fileName = "base";
String path = "/home/marc/base/"+fileName;

Dein
srcEbootLast wäre dann "/base"
Ein ReplaceAll führt dann zu folgendem Ergebnis:
"/home/marc"

Und das ist absolut nicht das was du willst. ReplaceAll ist bei dir nur ein Workaround.
 
Estmal danke für eure Antworten und erklärungen. Habe ich mir schon gedacht, dass es schneller ist usw. Wollte es nur genau wissen.

Code:
      String fileName = "base";
.
      String path = "/home/marc/base/"+fileName;

Wäre jetzt nicht der Fall, das keine Datei ist, da sie durch einen filechooser mit filter ausgewählt wird. Werde dann nun Toms Lösung nehmen und dne Thread als erledigt abhaken.
 
Zurück