私は文字列を持っています:
/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が返されます。区切り文字との一致がない場合は、空の文字列を返します。
これもファイル名を取得することができます
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
を印刷します
Kotlinでは、区切り文字を指定してsubstringAfterLast
を使用できます。
val string = "/abc/def/ghfj.doc"
val result = url.substringAfterLast("/")
println(result)
// It will show ghfj.doc
doc から:
最後に出現した区切り文字の後の部分文字列を返します。文字列に区切り文字が含まれていない場合は、missingDelimiterValueを返します。デフォルトは元の文字列です。
Guava とします。
String id="/abc/def/ghfj.doc";
String valIfSplitIsEmpty="";
return Iterables.getLast(Splitter.on("/").split(id),valIfSplitIsEmpty);
最終的にSplitter
を設定して
Splitter.on("/")
.trimResults()
.omitEmptyStrings()
...
また、 guava Splitterに関するこの記事 および guava Iterableに関するこの記事 を見てください。
分割関数を直接使うのであればもっと良いと思います
String toSplit = "/abc/def/ghfj.doc";
String result[] = toSplit.split("/");
String returnValue = result[result.length - 1]; //equals "ghfj.doc"