Tam yolu içeren bir değişkeni işlemeniz gerekiyorsa (ör .:) thePath = "http://stackoverflow.com/directory/subdirectory/filename.jpg"
ve yalnızca "dosya adı" döndürmek istiyorsanız şunları kullanabilirsiniz:
theName = thePath.split("/").slice(-1).join().split(".").shift();
sonuç Name == "dosyaadı" olur ;
Bunu denemek için krom hata ayıklayıcının konsol penceresine aşağıdaki komutu yazın:
window.location.pathname.split("/").slice(-1).join().split(".").shift()
Yalnızca dosya adını ve uzantısını işlemeniz gerekiyorsa (ör .:) theNameWithExt = "filename.jpg"
:
theName = theNameWithExt.split(".").shift();
sonuç, yukarıdakiyle aynı olan Name == "dosyaadı" olur ;
Notlar:
- Birincisi biraz daha yavaştır çünkü daha fazla işlem yapar; ancak her iki durumda da çalışır, başka bir deyişle, yol adını içeren belirli bir dizeden uzantı olmadan dosya adını veya ex ile dosya adını ayıklayabilir. İkincisi, yalnızca belirli bir değişken, filename.ext gibi ext olan bir dosya adı içeriyorsa, ancak biraz daha hızlıysa çalışır.
- Her iki çözüm de yerel ve sunucu dosyaları için çalışır;
Ancak ne performansların diğer cevaplarla karşılaştırılması, ne de tarayıcı veya işletim sistemi uyumluluğu hakkında hiçbir şey söyleyemem.
çalışma snippet'i 1: tam yol
var thePath = "http://stackoverflow.com/directory/subdirectory/filename.jpg";
theName = thePath.split("/").slice(-1).join().split(".").shift();
alert(theName);
çalışma snippet'i 2: uzantılı dosya adı
var theNameWithExt = "filename.jpg";
theName = theNameWithExt.split("/").slice(-1).join().split(".").shift();
alert(theName);
çalışma snippet'i 2: çift uzantılı dosya adı
var theNameWithExt = "filename.tar.gz";
theName = theNameWithExt.split("/").slice(-1).join().split(".").shift();
alert(theName);