233

我有一个字符串:

/abc/def/ghfj.doc

我想从中提取ghfj.doc,即最后一个之后的子字符串/,或者/从右边开始。

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

4

10 回答 10

365
String example = "/abc/def/ghfj.doc";
System.out.println(example.substring(example.lastIndexOf("/") + 1));
于 2013-01-14T10:17:42.680 回答
48

一个非常简单的实现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];
于 2013-01-14T10:17:27.317 回答
42

你试过什么?这很简单:

String s = "/abc/def/ghfj.doc";
s.substring(s.lastIndexOf("/") + 1)
于 2013-01-14T10:18:27.907 回答
32

另一种方法是使用.

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

如果将 null 传递给此方法,它将返回 null。如果没有与分隔符匹配,它将返回空字符串。

于 2017-01-10T11:16:10.940 回答
12

您可以使用 Apache 公共资源:

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

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

于 2016-07-01T14:56:19.270 回答
8

这也可以获取文件名

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

于 2016-08-25T18:50:52.560 回答
4

番石榴做到这一点:

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 的文章

于 2018-05-28T08:13:59.913 回答
3

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

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

文档

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

于 2018-03-27T22:37:08.607 回答
0

我认为如果我们直接使用拆分功能会更好

String toSplit = "/abc/def/ghfj.doc";

String result[] = toSplit.split("/");

String returnValue = result[result.length - 1]; //equals "ghfj.doc"
于 2016-05-10T22:48:09.837 回答
0

java 安卓

就我而言

我想从

~/propic/........png

/propic/之后的任何内容都与之前的内容无关

........png

最后,我在Class StringUtils中找到了代码

这是代码

     public static String substringAfter(final String str, final String separator) {
         if (isEmpty(str)) {
             return str;
         }
         if (separator == null) {
             return "";
         }
         final int pos = str.indexOf(separator);
         if (pos == 0) {
             return str;
         }
         return str.substring(pos + separator.length());
     }
于 2021-02-04T00:43:50.573 回答