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. Если нет совпадения с разделителем, он вернет пустую строку.


вы можете использовать Apache commons:

на подстроку после последнего вхождения этой метод.

и для подстроки после первого вхождения эквивалентным методом является здесь.


Это также может получить имя файла

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