Apa perbedaan antara
alert("abc".substr(0,2));
dan
alert("abc".substring(0,2));
Keduanya tampaknya menghasilkan "ab".
javascript
substring
Perbedaan mesin
sumber
sumber
substring
mengungguli semua yang lain di Chrome akhir-akhir ini.slice
metode ini,substring
tidak menangani penyesuaian untuk parameter negatif.substr
metode dansubstring
metode"? Ini benar-benar metode kelebihan beban yang disukai?substr()
menjadi apa yang Anda sebut "pseudo-deprecated" di bagian atas halaman dokumen di sini: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… - Adakah yang memiliki informasi lebih lanjut tentang hal ini, misalnya apakah ada browser yang berencana untuk benar-benar usangsubstr()
pada suatu saat di masa depan? Atau seperti yang disarankan Steven Lu, mungkinkah ada kerugian kinerja untuk menggunakansubstr()
maju?Jawaban:
Perbedaannya ada pada argumen kedua. Argumen kedua
substring
adalah indeks untuk berhenti (tetapi tidak termasuk), tetapi argumen keduasubstr
adalah panjang maksimum untuk kembali.Tautan?
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring
sumber
String.prototype.substr()
sudah usang ... (Hal ini didefinisikan dalam Lampiran B standar ECMA-262, yang pengantarnya menyatakan: "... Pemrogram tidak boleh menggunakan atau menganggap keberadaan fitur dan perilaku ini saat menulis kode skrip ECMAS baru.… ")substring
( MDN ) mengambil parameter sebagai(from, to)
.substr
( MDN ) mengambil parameter sebagai(from, length)
.Pembaruan : MDN mempertimbangkan
substr
warisan.Anda dapat ingat
substring
mengambil indeks, seperti halnya metode ekstraksi string lain, slice .Ketika mulai dari 0 Anda dapat menggunakan metode mana pun.
sumber
.substring()
mengambil indeks. Anda dapat mengingatnya karena itu satu-satunya dengan huruf 'i' di namanya..slice()
mengambil indeks juga.Seperti yang ditunjukkan dalam jawaban yatima2975, ada perbedaan tambahan:
substr()
menerima posisi awal yang negatif sebagai ofset dari ujung tali.substring()
tidak.Dari MDN :
Jadi untuk meringkas perbedaan fungsional:
substring(begin-offset, end-offset-exclusive)
di mana mulai-offset0
atau lebih besarsubstr(begin-offset, length)
di mana mulai-offset juga bisa negatifsumber
Gotcha lain yang baru-baru ini saya temui adalah bahwa di IE 8, secara
"abcd".substr(-1)
keliru mengembalikan"abcd"
, sedangkan Firefox 3,6 kembali"d"
sebagaimana mestinya.slice
berfungsi dengan baik pada keduanya.Lebih lanjut tentang topik ini dapat ditemukan di sini .
sumber
Perbedaan utamanya adalah itu
substr () memungkinkan Anda menentukan panjang maksimum untuk kembali
substring () memungkinkan Anda untuk menentukan indeks dan argumen kedua TIDAK inklusif
Ada beberapa seluk-beluk tambahan antara substr () dan substring () seperti penanganan argumen yang sama dan argumen negatif. Perhatikan juga substring () dan slice () yang serupa tetapi tidak selalu sama.
sumber
slice
:"string".slice(2,-2); // "ri"
Perbedaannya adalah parameter kedua. Parameter kedua mereka, sementara kedua angka, mengharapkan dua hal yang berbeda:
Saat menggunakan substring, parameter kedua adalah indeks pertama yang tidak menyertakan:
Saat menggunakan substring, parameter kedua adalah jumlah karakter untuk dimasukkan dalam substring:
sumber
Perbedaan besar adalah,
substr()
adalah metode usang yang masih dapat digunakan, tetapi harus digunakan dengan hati-hati karena mereka diharapkan akan dihapus seluruhnya di masa depan. Anda harus berusaha menghapus penggunaannya dari kode Anda. Dansubstring()
metode itu berhasil dan menentukan yang sebelumnya.sumber
substr()
? Saya telah membacanya dari beberapa orang, tetapi saya tidak dapat menemukan informasi di web yang mendukung pernyataan itu. Plus, Mozilla tidak memasukkannya ke dalam daftar fitur usang / usang: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…String.prototype.substr()
didefinisikan dalam Lampiran B dari standar ECMA-262, yang pengantarnya menyatakan: "... Pemrogram tidak boleh menggunakan atau mengasumsikan keberadaan fitur dan perilaku ini ketika menulis kode skrip ECMAS baru. ..."substr()
benar-benar dicatat sebagai usang pada beberapa dokumen.Metode Iris vs Substr vs Substring vs []
Ada manfaat kinerja untuk masing-masing metode javascript ini. Silakan gunakan fungsi-fungsi ini sesuai.
sumber
substring (): Ini memiliki 2 parameter "start" dan "end".
Jika parameter akhir tidak ditentukan, semua karakter dari posisi awal hingga akhir string diekstraksi.
Jika nilai parameter mulai lebih besar dari nilai parameter akhir, metode ini akan menukar dua argumen. Ini berarti awal akan digunakan sebagai akhir dan akhir akan digunakan sebagai awal.
substr () : Ini memiliki 2 parameter "mulai" dan "hitung".
diperlukan parameter mulai dan tentukan posisi di mana memulai ekstraksi.
parameter hitung adalah opsional dan menentukan jumlah karakter untuk diekstraksi.
Jika parameter hitung tidak ditentukan, semua karakter dari posisi awal hingga akhir string diekstraksi. Jika hitung 0 atau negatif, string kosong dikembalikan.
sumber
substring (startIndex, endIndex (tidak termasuk))
substr (startIndex, berapa banyak karakter)
sumber