Apakah ada cara agar saya bisa mendapatkan nilai terakhir (berdasarkan simbol '\') dari jalur penuh?
Contoh:
C:\Documents and Settings\img\recycled log.jpg
Dengan kasus ini, saya hanya ingin mendapatkan recycled log.jpg
dari path lengkap dalam JavaScript.
javascript
Jin Yong
sumber
sumber
replace
adalah jauh lebih lambat darisubstr
yang dapat digunakan dalam hubungannya denganlastIndexOf('/')+1
: jsperf.com/replace-vs-substringFiddle
, meskipun untuk `\\` , itu berfungsi dengan baik."/var/drop/foo/boo/moo.js".replace(/^.*[\\\/]/, '')
pengembalianmoo.js
Hanya demi kinerja, saya menguji semua jawaban yang diberikan di sini:
Dan pemenangnya adalah jawaban gaya Split dan Pop , Terima kasih kepada bobince !
sumber
path.split(/.*[\/|\\]/)[1];
Di Node.js, Anda dapat menggunakan modul parse Path ...
sumber
basename
fungsi:path.basename(file)
Dari platform apa jalur itu berasal? Jalur Windows berbeda dari jalur POSIX berbeda dari jalur Mac OS 9 jalur berbeda dari jalur RISC OS berbeda ...
Jika ini adalah aplikasi web tempat nama file dapat berasal dari platform yang berbeda, tidak ada satu solusi. Namun tusukan yang masuk akal adalah dengan menggunakan '\' (Windows) dan '/' (Linux / Unix / Mac dan juga alternatif pada Windows) sebagai pemisah jalur. Ini versi non-RegExp untuk kesenangan ekstra:
sumber
var path = '\\Dir2\\Sub1\\SubSub1'; //path = '/Dir2/Sub1/SubSub1'; path = path.split('\\').length > 1 ? path.split('\\').slice(0, -1).join('\\') : path; path = path.split('/').length > 1 ? path.split('/').slice(0, -1).join('/') : path; console.log(path);
Saat itu, solusi Anda tidak melindungi terhadap string kosong sebagai input. Dalam hal itu, gagal dengan
TypeError: /([^(\\|\/|\:)]+)$/.exec(fullPath) has no properties
.bobince, inilah versi nickf's yang menangani pembatas path DOS, POSIX, dan HFS (dan string kosong):
sumber
Baris kode JavaScript berikut akan memberi Anda nama file.
sumber
Tidak lebih ringkas dari jawaban nickf , tetapi jawaban ini langsung "mengekstrak" jawaban alih-alih mengganti bagian yang tidak diinginkan dengan string kosong:
sumber
Pertanyaan yang menanyakan "dapatkan nama file tanpa ekstensi" merujuk ke sini tetapi tidak ada solusi untuk itu. Berikut adalah solusi yang dimodifikasi dari solusi Bobbie.
sumber
Yang lainnya
Di sini split memiliki ekspresi reguler dengan kelas karakter
. Kedua karakter harus diloloskan dengan '\'
Atau gunakan array untuk membagi
Ini akan menjadi cara untuk secara dinamis mendorong lebih banyak separator ke dalam array, jika diperlukan.
Jika
fullPath
secara eksplisit diatur oleh string dalam kode Anda, ia harus lolos dari backslash !Suka
"C:\\Documents and Settings\\img\\recycled log.jpg"
sumber
Saya menggunakan:
Ini menggantikan yang terakhir
\
sehingga juga berfungsi dengan folder.sumber
sumber
Jawaban lengkapnya adalah:
sumber
Sedikit fungsi untuk dimasukkan dalam proyek Anda untuk menentukan nama file dari jalur lengkap untuk Windows serta jalur absolut GNU / Linux & UNIX.
sumber
sumber
Script berhasil untuk pertanyaan Anda, Tes Lengkap
sumber
Solusi ini jauh lebih sederhana dan generik, untuk 'nama file' dan 'jalur'.
sumber
sumber
var file_name = file_path.substring(file_path.lastIndexOf('/'));
sumber