2017-01-06 6 views
1

Was ist eine effiziente Möglichkeit, Nummer 17 aus dem folgenden Pfad zu bekommen?Android Teilzeichenfolge

/contacts/lookup/1217x31-2BN8629/17/data 

Es arbeitet mit

substring(path.lastIndexOf('/') - 2, path.lastIndexOf('/')) 

Aber dann ist es für eine Reihe 10-99 fest einprogrammiert, und wenn eine Zahl zum Beispiel 3, wird es zurückgeben/3 usw.

+0

Sie könnten alle/in der Zeichenfolge finden, dessen Index erhalten und als den Teil erhalten. –

+1

Sie suchen den Index zweimal. Verwenden Sie stattdessen eine lokale Variable und suchen Sie nur einmal. – dsh

+1

Genau genommen ist dies nicht sicher, da Sie nicht angegeben haben * was * über den Repräsentanten "17", auf dem die Extraktion basieren soll. Wenn wir viele andere Fälle gesehen haben, können wir das vielleicht ableiten - aber der Punkt bei Regeln ist, dass sie unterscheiden müssen, was Sie wollen von dem, was Sie nicht tun, und wir können nur raten. –

Antwort

3

Die am einfachsten, IMHO würde, sei die Zeichenfolge aufgeteilt nach dem / Charakter, und nehmen Sie das vor-letzte Element:

String[] parts = str.split("/"); 
String result = parts[parts.length - 2]; 
2

Zuerst: Führen Sie jede Operation nur einmal durch. Verwenden Sie eine lokale Variable, um Daten zu speichern, die Sie ein zweites Mal benötigen.

Zweitens: Sie können nach dem nächsten '/' suchen, sobald Sie den letzten gefunden haben.

ZB:

final int lastSlashIndex = path.lastIndexOf('/'); 
final int nextToLastSlashIndex = path.lastIndexOf('/', lastSlashIndex-1); 
path.substring(nextToLastSlashIndex+1, lastSlashIndex);