J'ai une ficelle:
/abc/def/ghfj.doc
J'aimerais en extraire ghfj.doc
, c'est-à-dire la sous-chaîne après le dernier /
ou le premier /
à partir de la droite.
Quelqu'un pourrait-il s'il vous plaît fournir de l'aide?
String example = "/abc/def/ghfj.doc";
System.out.println(example.substring(example.lastIndexOf("/") + 1));
Une implémentation très simple avec 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];
qu'as-tu essayé? c'est très simple:
String s = "/abc/def/ghfj.doc";
s.substring(s.lastIndexOf("/") + 1)
Une autre façon consiste à utiliser this .
String path = "/abc/def/ghfj.doc"
String fileName = StringUtils.substringAfterLast(path, "/");
Si vous passez null à cette méthode, il retournera null. S'il n'y a pas de correspondance avec le séparateur, il retournera une chaîne vide.
Cela peut aussi obtenir le nom du fichier
import Java.nio.file.Paths;
import Java.nio.file.Path;
Path path = Paths.get("/abc/def/ghfj.doc");
System.out.println(path.getFileName().toString());
Imprimera ghfj.doc
Dans Kotlin, vous pouvez utiliser substringAfterLast
, en spécifiant un délimiteur.
val string = "/abc/def/ghfj.doc"
val result = url.substringAfterLast("/")
println(result)
// It will show ghfj.doc
De la doc :
Retourne une sous-chaîne après la dernière occurrence du délimiteur. Si la chaîne ne contient pas le délimiteur, renvoie missingDelimiterValue, qui est la chaîne par défaut.
Avec Guava , faites ceci:
String id="/abc/def/ghfj.doc";
String valIfSplitIsEmpty="";
return Iterables.getLast(Splitter.on("/").split(id),valIfSplitIsEmpty);
Finalement, configurez la Splitter
et utilisez
Splitter.on("/")
.trimResults()
.omitEmptyStrings()
...
Regardez également cet article sur la goyave Splitter et cet article sur la goyave Iterables
Je pense que ce serait mieux si nous utilisions directement la fonction split
String toSplit = "/abc/def/ghfj.doc";
String result[] = toSplit.split("/");
String returnValue = result[result.length - 1]; //equals "ghfj.doc"