w3schools tutorialspoint length java string substring

tutorialspoint - Java: obtener una subcadena de una cadena que comienza después de un personaje en particular



substring java indexof (8)

Tengo una cadena:

/abc/def/ghfj.doc

Me gustaría extraer ghfj.doc de esto, es decir, la subcadena después del último / , o primero / desde la derecha.

¿Podría alguien ayudarme?


¿Qué has intentado? es muy sencillo:

String s = "/abc/def/ghfj.doc"; s.substring(s.lastIndexOf("/") + 1)


Creo que sería mejor si usamos directamente la función de división

String toSplit = "/abc/def/ghfj.doc"; String result[] = toSplit.split("/"); String returnValue = result[result.length - 1]; //equals "ghfj.doc"


En Kotlin puedes usar substringAfterLast , especificando un delimitador.

val string = "/abc/def/ghfj.doc" val result = url.substringAfterLast("/") println(result) // It will show ghfj.doc

Del doc :

Devuelve una subcadena después de la última aparición de delimitador. Si la cadena no contiene el delimitador, devuelve missingDelimiterValue, que por defecto es la cadena original.


Esto también puede obtener el nombre de archivo

import java.nio.file.Paths; import java.nio.file.Path; Path path = Paths.get("/abc/def/ghfj.doc"); System.out.println(path.getFileName().toString());

Se imprimirá ghfj.doc


Otra forma es usar this .

String path = "/abc/def/ghfj.doc" String fileName = StringUtils.substringAfterLast(path, "/");

Si pasa null a este método, devolverá nulo. Si no hay coincidencia con el separador, devolverá la cadena vacía.


Puedes usar Apache commons:

Para subcadena después de la última aparición, use this método.

Y para la subcadena después de la primera aparición, el método equivalente está here .


Una implementación muy simple con String.split() :

String path = "/abc/def/ghfj.doc"; // Split path into segments String segments[] = path.split("/"); // Grab the last segment String document = segments[segments.length - 1];


String example = "/abc/def/ghfj.doc"; System.out.println(example.substring(example.lastIndexOf("/") + 1));