Java:从特定字符后面的字符串中获取子字符串

Sun*_*nny 181 java string substring

我有一个字符串:

/abc/def/ghfj.doc
Run Code Online (Sandbox Code Playgroud)

我想从中提取ghfj.doc,即最后一个后的子串/,或者/右起第一个.

有人可以提供一些帮助吗?

Séb*_*nec 291

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


Veg*_*ger 40

一个非常简单的实现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];
Run Code Online (Sandbox Code Playgroud)


vis*_*aim 34

你试过什么?这很简单:

String s = "/abc/def/ghfj.doc";
s.substring(s.lastIndexOf("/") + 1)
Run Code Online (Sandbox Code Playgroud)


小智 21

另一种方法是使用.

String path = "/abc/def/ghfj.doc"
String fileName = StringUtils.substringAfterLast(path, "/");
Run Code Online (Sandbox Code Playgroud)

如果将null传递给此方法,它将返回null.如果与分隔符不匹配,则返回空字符串.


Mic*_*cha 9

您可以使用Apache commons:

对于最后一次出现后的子串,请使用方法.

对于第一次出现后的子串,等效方法就在这里.


pus*_*hya 7

这也可以获得文件名

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

会打印 ghfj.doc


Fil*_*ito 6

在 Kotlin 中,您可以使用substringAfterLast来指定分隔符。

val string = "/abc/def/ghfj.doc"
val result = url.substringAfterLast("/")
println(result)
// It will show ghfj.doc
Run Code Online (Sandbox Code Playgroud)

来自文档

返回最后一次出现分隔符之后的子字符串。如果字符串不包含分隔符,则返回missingDelimiterValue,默认为原始字符串。