我有一个字符串:

/abc/def/ghfj.doc

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

有人能帮帮忙吗?


当前回答

用番石榴这样做:

String id="/abc/def/ghfj.doc";
String valIfSplitIsEmpty="";
return Iterables.getLast(Splitter.on("/").split(id),valIfSplitIsEmpty);

最终配置并使用Splitter

Splitter.on("/")
.trimResults()
.omitEmptyStrings()
...

还可以看看这篇关于番石榴分离器的文章和这篇关于番石榴迭代的文章

其他回答

这也可以获取文件名

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

你都试过什么? 这很简单:

String s = "/abc/def/ghfj.doc";
s.substring(s.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];

你可以使用Apache commons:

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

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

用番石榴这样做:

String id="/abc/def/ghfj.doc";
String valIfSplitIsEmpty="";
return Iterables.getLast(Splitter.on("/").split(id),valIfSplitIsEmpty);

最终配置并使用Splitter

Splitter.on("/")
.trimResults()
.omitEmptyStrings()
...

还可以看看这篇关于番石榴分离器的文章和这篇关于番石榴迭代的文章