Mam ciąg:
/abc/def/ghfj.doc
Chciałbym ghfj.doc
z tego wyodrębnić , tzn. Podłańcuch po ostatnim /
lub pierwszy /
od prawej.
Czy ktoś mógłby udzielić pomocy?
Mam ciąg:
/abc/def/ghfj.doc
Chciałbym ghfj.doc
z tego wyodrębnić , tzn. Podłańcuch po ostatnim /
lub pierwszy /
od prawej.
Czy ktoś mógłby udzielić pomocy?
Odpowiedzi:
String example = "/abc/def/ghfj.doc";
System.out.println(example.substring(example.lastIndexOf("/") + 1));
Bardzo prosta implementacja z 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];
czego próbowałeś to jest bardzo proste:
String s = "/abc/def/ghfj.doc";
s.substring(s.lastIndexOf("/") + 1)
Innym sposobem jest użycie tego .
String path = "/abc/def/ghfj.doc"
String fileName = StringUtils.substringAfterLast(path, "/");
Jeśli przekażesz null tej metodzie, zwróci null. Jeśli nie ma zgodności z separatorem, zwróci pusty ciąg.
StringUtils
bibliotekę, ta odpowiedź pokazuje, jak to zrobić: stackoverflow.com/a/33935645/2966583
Z Guava zrób to:
String id="/abc/def/ghfj.doc";
String valIfSplitIsEmpty="";
return Iterables.getLast(Splitter.on("/").split(id),valIfSplitIsEmpty);
W końcu skonfiguruj Splitter
i użyj
Splitter.on("/")
.trimResults()
.omitEmptyStrings()
...
Zapoznaj się także z tym artykułem na temat rozdzielacza guawy i artykułem na temat Iterabeli guawy
W Kotlin możesz użyć substringAfterLast
, określając ogranicznik.
val string = "/abc/def/ghfj.doc"
val result = url.substringAfterLast("/")
println(result)
// It will show ghfj.doc
Z dokumentu :
Zwraca podciąg po ostatnim wystąpieniu ogranicznika. Jeśli ciąg nie zawiera ogranicznika, zwraca wartość brakujeDelimiterValue, która domyślnie przyjmuje oryginalny ciąg.
Myślę, że byłoby lepiej, gdybyśmy użyli bezpośrednio funkcji podziału
String toSplit = "/abc/def/ghfj.doc";
String result[] = toSplit.split("/");
String returnValue = result[result.length - 1]; //equals "ghfj.doc"