En az üç yol:
Normal bir ifade:
var result = /[^/]*$/.exec("foo/bar/test.html")[0];
... [^/]*
dizenin ( $
) sonunda "eğik çizgi içermeyen karakter dizisini yakala" ( ) diyor . Ardından, döndürülen eşleşme nesnesinden eşleşen karakterleri, ona dizin oluşturarak alır ( [0]
); bir eşleşme nesnesinde, ilk girdi eşleşen dizgenin tamamıdır. Yakalama gruplarına gerek yok.
Canlı örnek
Kullanılması lastIndexOf
ve substring
:
var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);
lastIndexOf
göründüğü gibi yapar: Bir dizedeki bir karakterin (iyi, dizge) son oluşumunun dizinini bulur, bulunamazsa -1 döndürür. if (n !== -1)
Ondan dokuzunda muhtemelen bu dönüş değerini ( ) kontrol etmek istersiniz , ancak yukarıdakine 1 eklediğimiz ve alt dizeyi çağırdığımız için, sonunda str.substring(0)
dizeyi döndüren işi yaparız .
kullanma Array#split
Sudhir ve Tom Walters bu konuya burada ve burada değiniyor , ancak sadece eksiksizlik için:
var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();
split
verilen sınırlayıcıyı kullanarak bir dizeyi böler ve bir dizi döndürür.
lastIndexOf
/ substring
Çözümdür muhtemelen (bir zaman motorlar birbirinden bu kadar radikal değişiklik bu yana, JavaScript ve performansı hakkında hiçbir şey söylemeden dikkatli olmak zorunda olsa da) en verimli, ancak bir döngü içinde kaç kez bu binlerce yapıyoruz sürece, o değil Önemli değil ve kodun netliği için çabalarım.