2012-05-28 16 views
5

¿Hay una manera simple de obtener la penúltima subcadena delimitada de una cadena?Cadena anterior último índice

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

En este ejemplo, la subcadena resultante sería "P_55/T_140"

Me gustaría encontrar el índice de barra inclinada al principio de esta subcadena (/)

String.lastIndexOf() llamar dos veces habría ayuda. Pero buscando un enfoque más limpio que sea genérico. Quizás a cualquier N.

Respuesta

8

Pero en busca de un enfoque más limpio que sea genérico. Tal vez para cualquier N.

Calling String.lastIndexOf(int,int) en un bucle que va a ser bastante eficiente, y podría decirse que bastante limpio:

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

Esto puede ser fácilmente convertido en una función de ayuda teniendo str, '/' y n y devolviendo out.

+0

Esta también será una solución perfectamente rápida. –

0

Para obtener el nombre de la carpeta donde reside el archivo multimedia

/almacenamiento/emulado/0/WhatsApp/media/video WhatsApp/VID-20170812-WA0000.mp4

usar el siguiente código

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

devuelve el folderName como 'video de whatsapp'

Cuestiones relacionadas