Java:从特定字符之后开始的字符串中获取子字符串

问题描述 投票:0回答:10

我有一根绳子:

/abc/def/ghfj.doc

我想从中提取

ghfj.doc
,即最后一个
/
之后的子字符串,或从右边开始的第一个
/

有人可以提供帮助吗?

java string substring
10个回答
398
投票
String example = "/abc/def/ghfj.doc";
System.out.println(example.substring(example.lastIndexOf("/") + 1));

53
投票

一个非常简单的实现,使用

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

44
投票

你尝试过什么? 很简单:

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

37
投票

另一种方法是使用 Apache Commons Lang 中的

StringUtils.substringAfterLast()

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

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


12
投票

您可以使用 Apache commons:

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

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


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


6
投票

在 Kotlin 中,您可以使用

substringAfterLast
,指定分隔符。

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

来自文档

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


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


0
投票

我认为直接使用 split 函数会更好

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

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

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

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());
     }
© www.soinside.com 2019 - 2024. All rights reserved.