簡體   English   中英

Java:從特定字符之后開始的字符串中獲取子字符串

[英]Java: Getting a substring from a string starting after a particular character

我有一個字符串:

/abc/def/ghfj.doc

我想從中提取ghfj.doc ,即最后一個/之后的子字符串,或從右邊開始的第一個/

有人可以提供一些幫助嗎?

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)

另一種方法是使用this

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

如果您將 null 傳遞給此方法,它將返回 null。 如果與分隔符不匹配,它將返回空字符串。

您可以使用 Apache 公共資源:

對於最后一次出現后的子字符串,請使用方法。

對於第一次出現后的子字符串等效方法是here

這也可以獲得文件名

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 id="/abc/def/ghfj.doc";
String valIfSplitIsEmpty="";
return Iterables.getLast(Splitter.on("/").split(id),valIfSplitIsEmpty);

最終配置Splitter並使用

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

還可以看看 這篇關於 guava Splitter 的文章這篇關於 guava Iterables 的文章

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

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

文檔

返回最后一次出現分隔符后的子字符串。 如果字符串不包含分隔符,則返回默認為原始字符串的 missingDelimiterValue。

我認為如果我們直接使用 split 函數會更好

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

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

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

爪哇機器人

就我而言

我想從

~/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());
     }
static String substringAfterLast(String all, String part) {
    return all.substring(all.lastIndexOf(part) + part.length() + 1);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM