2012-05-28 9 views
5

Gibt es eine einfache Möglichkeit, den vorletzten begrenzten Teilstring eines Strings zu erhalten?String vorheriger letzter Index

String original = "/1/6/P_55/T_140"; 

In diesem Beispiel würde die resultierende Teilzeichenfolge "P_55/T_140" sein

Ich mag würde würde den Index des Schrägstrichs am Anfang dieser Teilkette (/)

Ich weiß String.lastIndexOf() Aufruf zweimal finden Hilfe. Aber auf der Suche nach einem saubereren Ansatz, der generisch ist. Vielleicht zu jedem N.

Antwort

8

Aber auf der Suche nach einem saubereren Ansatz, der generisch ist. Vielleicht irgendein N.

Aufruf String.lastIndexOf(int,int) in einer Schleife wird sehr effizient sein, und wohl ziemlich sauber:

int pos = str.length(); 
    for (int i = 0; i < n; i++) { 
     pos = str.lastIndexOf('/', pos - 1); 
    } 
    String out = str.substring(pos + 1); 

Dies kann leicht in eine Hilfsfunktion unter str gedreht werden, '/' und n und zurückgeben out.

+0

Dies wird auch eine sehr schnelle Lösung sein. –

0

die Ordnernamen zu erhalten, wo die Mediendatei

/Speicher befindet/emulierten/0/WhatsApp/Medien/WhatsApp Video/VID-20170812-WA0000.mp4

den Code unten verwenden

String folderName = filePath.substring(filePath.lastIndexOf('/',filePath.lastIndexOf('/')-1),filePath.lastIndexOf('/')); 

gibt den Ordnernamen als 'WhatsApp Video' zurück