Bir dize var:
/abc/def/ghfj.doc
Bundan ghfj.doc
, yani sondan sonra /
veya /
sağdan önce alt dize ayıklamak istiyorum .
Birisi yardım edebilir mi?
Bir dize var:
/abc/def/ghfj.doc
Bundan ghfj.doc
, yani sondan sonra /
veya /
sağdan önce alt dize ayıklamak istiyorum .
Birisi yardım edebilir mi?
Yanıtlar:
String example = "/abc/def/ghfj.doc";
System.out.println(example.substring(example.lastIndexOf("/") + 1));
Çok basit bir uygulama 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];
ne denedin çok basit:
String s = "/abc/def/ghfj.doc";
s.substring(s.lastIndexOf("/") + 1)
Bir başka yolu kullanmaktır bu .
String path = "/abc/def/ghfj.doc"
String fileName = StringUtils.substringAfterLast(path, "/");
Bu yönteme null değerini iletirseniz null değerini döndürür. Ayırıcı ile eşleşme yoksa, boş dize döndürür.
StringUtils
kitaplığı içe aktarmanız gerekir , bu cevap bunu yapmak için sıcak gösterir: stackoverflow.com/a/33935645/2966583
İle Guava bunu:
String id="/abc/def/ghfj.doc";
String valIfSplitIsEmpty="";
return Iterables.getLast(Splitter.on("/").split(id),valIfSplitIsEmpty);
Sonunda yapılandırın Splitter
ve kullanın
Splitter.on("/")
.trimResults()
.omitEmptyStrings()
...
Ayrıca içine bakmak guava Bölücü bu makaleye ve guava Iterables bu makaleye
Kotlin'de substringAfterLast
, bir sınırlayıcı belirterek kullanabilirsiniz .
val string = "/abc/def/ghfj.doc"
val result = url.substringAfterLast("/")
println(result)
// It will show ghfj.doc
Gönderen doc :
Sınırlayıcının son oluşumundan sonra bir alt dize döndürür. Dize ayırıcı içermiyorsa, varsayılan olarak orijinal dizeyi içeren missingDelimiterValue değerini döndürür.
Doğrudan split işlevini kullanırsak bunun daha iyi olacağını düşünüyorum.
String toSplit = "/abc/def/ghfj.doc";
String result[] = toSplit.split("/");
String returnValue = result[result.length - 1]; //equals "ghfj.doc"