Java: получение подстроки из строки, начинающейся после определенного символа
у меня есть строка:
/abc/def/ghfj.doc
Я хотел бы извлечь ghfj.doc
от этого, т. е. подстрока после последнего /
или /
справа.
кто-нибудь может помочь?
9 ответов
String example = "/abc/def/ghfj.doc";
System.out.println(example.substring(example.lastIndexOf("/") + 1));
очень простая реализация с 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 s = "/abc/def/ghfj.doc";
s.substring(s.lastIndexOf("/") + 1)
другой способ-использовать этой.
String path = "/abc/def/ghfj.doc"
String fileName = StringUtils.substringAfterLast(path, "/");
Если вы передадите null этому методу, он вернет null. Если нет совпадения с разделителем, он вернет пустую строку.
Это также может получить имя файла
import java.nio.file.Paths;
import java.nio.file.Path;
Path path = Paths.get("/abc/def/ghfj.doc");
System.out.println(path.getFileName().toString());
печати ghfj.doc
Я думаю, что было бы лучше, если бы мы использовали непосредственно функцию split
String toSplit = "/abc/def/ghfj.doc";
String result[] = toSplit.split("/");
String returnValue = result[result.length - 1]; //equals "ghfj.doc"
в Котлине вы можете использовать substringAfterLast
, указав разделитель.
val string = "/abc/def/ghfj.doc"
val result = url.substringAfterLast("/")
println(result)
// It will show ghfj.doc
С doc:
возвращает подстроку после последнего вхождения разделителя. Если строка не содержит разделителя, возвращает missingDelimiterValue, который по умолчанию является исходной строкой.
С гуавы вы могли бы сделать это:
String id="/abc/def/ghfj.doc";
String valIfSplitIsEmpty="";
return Iterables.getLast(Splitter.on("/").split(id),valIfSplitIsEmpty);
в конечном итоге настроить Splitter
и использовать
Splitter.on("/")
.trimResults()
.omitEmptyStrings()
...
Также посмотрите в эта статья о Guava Splitter и эта статья о Guava Iterables