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

时间:2013-01-14 10:14:11

标签: java string substring

我有一个字符串:

/abc/def/ghfj.doc

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

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

10 个答案:

答案 0 :(得分:267)

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

答案 1 :(得分:39)

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];

答案 2 :(得分:32)

你试过什么? 这很简单:

String s = "/abc/def/ghfj.doc";
s.substring(s.lastIndexOf("/") + 1)

答案 3 :(得分:18)

另一种方法是使用this

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

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

答案 4 :(得分:8)

您可以使用Apache commons:

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

对于第一次出现后的子串,等效方法是here

答案 5 :(得分:3)

这也可以获取文件名

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

答案 6 :(得分:1)

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

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

来自doc

  

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

答案 7 :(得分:1)

使用Guava执行此操作:

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

最终配置Splitter并使用

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

另请查看this article on guava Splitterthis article on guava Iterables

答案 8 :(得分:0)

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

会更好
String toSplit = "/abc/def/ghfj.doc";

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

String returnValue = result[result.length - 1]; //equals "ghfj.doc"

答案 9 :(得分: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());
     }