Bagaimana cara mendapatkan segmen terakhir dari url? Saya memiliki skrip berikut yang menampilkan url lengkap dari tag jangkar yang diklik:
$(".tag_name_goes_here").live('click', function(event)
{
event.preventDefault();
alert($(this).attr("href"));
});
Jika urlnya
http://mywebsite/folder/file
bagaimana cara membuatnya hanya untuk menampilkan bagian "file" dari url di kotak peringatan?
javascript
jquery
oshirowanen
sumber
sumber
Jawaban:
Anda juga dapat menggunakan fungsi lastIndexOf () untuk menemukan kemunculan
/
karakter terakhir di URL Anda, lalu fungsi substring () untuk mengembalikan substring mulai dari lokasi itu:Dengan begitu, Anda akan menghindari membuat array yang berisi semua segmen URL Anda, seperti
split()
halnya.sumber
admin/store/tour/-1/
itu akan menjadi''
string?/
di bagian akhir?/
di akhir:var url = window.location.href.replace(/\/$/, ''); /* remove optional end / */ var lastSeg = url.substr(url.lastIndexOf('/') + 1);
sumber
http://mywebsite/folder/file/
"" == false
dalam kasus itu muncul bagian dari array dengan string kosongsumber
/
.console.log(history.location.pathname.split("/").pop())
Jika ada cara yang lebih baik, saya ingin tahu! Semoga komentar ini dapat mengarahkan lebih banyak orang ke jawaban Anda. Terima kasih @ Dblock247.../file?var=value&foo=bar
.). Solusi ini menyelesaikan masalah ini dengan cara yang lebih kuat dan modern: stackoverflow.com/a/51795122/1123743Hanya solusi lain dengan regex.
sumber
Javascript memiliki pemisahan fungsi yang terkait dengan objek string yang dapat membantu Anda:
sumber
Jawaban lain mungkin berfungsi jika jalurnya sederhana, hanya terdiri dari elemen jalur sederhana. Tetapi ketika itu berisi params permintaan juga, mereka pecah.
Lebih baik gunakan objek URL untuk ini daripada mendapatkan solusi yang lebih kuat. Ini adalah interpretasi parsing dari URL ini:
Memasukkan:
const href = 'https://stackoverflow.com/boo?q=foo&s=bar'
Keluaran:
'boo'
Ini berfungsi untuk semua browser umum. Hanya IE yang sekarat kami tidak mendukung itu (dan tidak akan). Untuk IE ada polyfill yang tersedia, (jika Anda peduli sama sekali).
sumber
Atau Anda dapat menggunakan ekspresi reguler:
sumber
alert(window.location.href.replace(/\/$/, '').replace(/.*//, ''))
sumber
Saya tahu, ini sudah terlambat, tetapi untuk yang lain: Saya sangat merekomendasikan menggunakan plugin PURL jquery . Motivasi untuk PURL adalah bahwa url dapat disegmentasi oleh '#' juga (contoh: tautan angular.js), yaitu url dapat terlihat seperti
atau
Dan dengan PURL Anda dapat dengan mudah memutuskan (segmen / fsegment) segmen mana yang ingin Anda dapatkan.
Untuk segmen terakhir "klasik", Anda dapat menulis:
sumber
Membangun jawaban Frédéric hanya menggunakan javascript:
sumber
Juga,
sumber
Jika Anda tidak khawatir tentang menghasilkan elemen tambahan menggunakan split maka filter dapat menangani masalah yang Anda sebutkan tentang trailing slash (Dengan anggapan Anda memiliki dukungan browser untuk filter).
sumber
targetValue = satu
Jika url Anda terlihat seperti:
atau
atau
Kemudian loc akhirnya tampak seperti: http://test.com/one
Sekarang, karena Anda menginginkan item terakhir, jalankan langkah berikutnya untuk memuat nilai (targetValue) yang Anda inginkan semula.
sumber
search
atauhash
.Gunakan
pathname
properti asli karena ini paling sederhana dan telah diuraikan dan diselesaikan oleh browser.$(this).attr("href")
dapat mengembalikan nilai seperti../..
yang tidak akan memberi Anda hasil yang benar.Jika Anda perlu menyimpan
search
danhash
(misalnyafoo?bar#baz
darihttp://quux.com/path/to/foo?bar#baz
) gunakan ini:sumber
pathname
parameter kueri strip, tetapihref
tidak.Untuk mendapatkan segmen terakhir dari jendela Anda saat ini:
window.location.href.substr(window.location.href.lastIndexOf('/') +1)
sumber
Anda dapat menghapus terlebih dahulu jika ada / di akhir dan kemudian mendapatkan bagian terakhir dari url
sumber
Mengembalikan segmen terakhir, terlepas dari garis miring:
sumber
path.sep
bukan garis miring. Lihat nodejs.org/api/path.html#path_path_sep . Ini akan membuat kode Anda portabel di seluruh OS.Disalin dari jawaban ini
sumber
Jawaban raddevus yang diperbarui:
Mencetak jalur terakhir url sebagai string:
sumber
Saya percaya lebih aman untuk menghapus garis miring ('/') sebelum melakukan substring. Karena saya mendapat string kosong dalam skenario saya.
sumber
Saya menggunakan regex dan split:
var last_path = location.href.match (/. / (. [\ w]) /) [1] .split ("#") [0] .split ("?") [0]
Pada akhirnya itu akan mengabaikan #? & / url akhir, yang sering terjadi. Contoh:
https://cardsrealm.com/profile/cardsRealm -> Mengembalikan cardsRealm
https://cardsrealm.com/profile/cardsRealm#hello -> Mengembalikan cardsRealm
https://cardsrealm.com/profile/cardsRealm?hello -> Mengembalikan cardsRealm
https://cardsrealm.com/profile/cardsRealm/ -> Mengembalikan cardsRealm
sumber
Saya tidak benar-benar tahu apakah regex adalah cara yang tepat untuk menyelesaikan masalah ini karena itu benar-benar dapat mempengaruhi efisiensi kode Anda, tetapi regex di bawah ini akan membantu Anda mengambil segmen terakhir dan masih akan memberi Anda segmen terakhir bahkan jika URL diikuti oleh yang kosong
/
. Regex yang saya buat adalah:sumber
Bekerja untukku.
sumber
Saya tahu ini sudah lama tetapi jika Anda ingin mendapatkan ini dari URL, Anda cukup menggunakan:
document.location.pathname
mendapatkan pathname dari URL saat ini.lastIndexOf
dapatkan indeks kejadian terakhir dari Regex berikut, dalam kasus kami adalah/.
. Titik berarti karakter apa pun, jadi, tidak akan dihitung jika/
karakter terakhir pada URL.substring
akan memotong string antara dua indeks.sumber
jika urlnya
http://localhost/madukaonline/shop.php?shop=79
console.log(location.search);
akan membawa?shop=79
jadi cara paling sederhana adalah dengan menggunakan location.search
Anda dapat mencari info lebih lanjut di sini dan di sini
sumber
Anda dapat melakukannya dengan jalur sederhana (w / 0) querystrings dll.
Memang mungkin terlalu rumit dan mungkin tidak performan, tapi saya ingin menggunakannya
reduce
untuk bersenang-senang.sumber