słuchaj, rozumiem wartość samodzielnego szukania odpowiedzi przed zadawaniem pytań, ale faktem jest, że to pytanie znacznie ułatwiło moje wyszukiwanie .. dokładnie to, czego chciałem po pierwszym trafieniu. Szybsze niż konsultacje z javadocs. Dobrze, że to pytanie jest tutaj. Dlaczego opinie negatywne?
Eric
3
Chociaż różni się to nieco od twojego pierwotnego pytania: w twoim przykładzie org.apache.commons.io.FilenameUtils.getBaseName jest o wiele bardziej niezawodny niż wykonywanie własnych operacji na łańcuchach.
Do Schäfer
4
@Eric Całkowicie zgadzam się z twoim komentarzem, ponieważ był to pierwszy wynik Google dla mojego pytania, a zaakceptowana odpowiedź jest dokładnie tym, czego potrzebowałem.
thonnor
Odpowiedzi:
310
String example ="/abc/def/ghfj.doc";System.out.println(example.substring(example.lastIndexOf("/")+1));
Wreszcie coś naprawdę przydatnego, nie wiedziałem o tej metodzie. Nienawidzę kłopotów z substringiem + indexof + 1 - 2 +3 w ogóle. To jest o wiele czystsze :)
BAERUS
Jeśli chcesz użyć tej metody na Androidzie, musisz zaimportować StringUtilsbibliotekę, ta odpowiedź pokazuje, jak to zrobić: stackoverflow.com/a/33935645/2966583
stramin
9
Możesz użyć wspólnego Apache:
W przypadku podciągów po ostatnim wystąpieniu użyj tego metody.
A dla podciągów po pierwszym wystąpieniu jest tutaj równoważna metoda .
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.
ten kod zgłosi błąd, jeśli separator nie zostanie znaleziony.
Patrick Parker,
@PatrickParker Dlaczego skomentowałeś wszędzie, że zgłosi błąd, jeśli separator nie zostanie znaleziony. Jeśli robisz to dla celów wiedzy niż w porządku, ale myślę, że to może trochę za dużo ...
Gaurav Mall
@GauravMall Pomagam ludziom ulepszać odpowiedzi, pisać lepszy kod, a tym, którzy odwiedzają, pomagają unikać pułapek i budować zrozumienie kodu, zanim gdzieś go wkleją. Z przyjemnością usunę mój komentarz, gdy poprawiona zostanie odpowiedź. Ponadto pisanie go w dwóch miejscach nie jest prawie „wszędzie”. Wreszcie sekcja komentarzy nie jest przeznaczona do meta dyskusji.
Odpowiedzi:
źródło
Bardzo prosta implementacja z
String.split()
:źródło
czego próbowałeś to jest bardzo proste:
źródło
Innym sposobem jest użycie tego .
Jeśli przekażesz null tej metodzie, zwróci null. Jeśli nie ma zgodności z separatorem, zwróci pusty ciąg.
źródło
StringUtils
bibliotekę, ta odpowiedź pokazuje, jak to zrobić: stackoverflow.com/a/33935645/2966583Możesz użyć wspólnego Apache:
W przypadku podciągów po ostatnim wystąpieniu użyj tego metody.
A dla podciągów po pierwszym wystąpieniu jest tutaj równoważna metoda .
źródło
Może to również uzyskać nazwę pliku
Wydrukuje
ghfj.doc
źródło
Z Guava zrób to:
W końcu skonfiguruj
Splitter
i użyjZapoznaj się także z tym artykułem na temat rozdzielacza guawy i artykułem na temat Iterabeli guawy
źródło
W Kotlin możesz użyć
substringAfterLast
, określając ogranicznik.Z dokumentu :
źródło
Myślę, że byłoby lepiej, gdybyśmy użyli bezpośrednio funkcji podziału
źródło