我有一个字符串:
/abc/def/ghfj.doc
我想从中提取ghfj.doc
,即从最后/
后面的子字符串,或从右边第一个/
。
有人可以提供一些帮助吗?
答案 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)
答案 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 Splitter和this 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());
}