Java:从特定字符开始的string中获取子string

我有一个string:

/abc/def/ghfj.doc 

我想从中提取ghfj.doc ,即最后一个/ ,或第一个/从右边的子string。

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

  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) 

你可以使用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" 

另一种方法是使用这个 。

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

如果你传递null给这个方法,它将返回null。 如果没有与分隔符匹配,它将返回空string。