Saya mencoba memindahkan beberapa kode JavaScript dari MicrosoftAjax ke JQuery. Saya menggunakan padanan JavaScript dalam MicrosoftAjax dari metode .net yang populer, mis. String.format (), String.startsWith (), dll. Apakah ada padanannya di jQuery?
javascript
jquery
string.format
Waleed Eissa
sumber
sumber
Jawaban:
The kode sumber untuk ASP.NET AJAX tersedia untuk referensi Anda, sehingga Anda dapat memilih melalui itu dan termasuk bagian-bagian yang Anda ingin terus menggunakan ke file JS yang terpisah. Atau, Anda bisa porting mereka ke jQuery.
Ini adalah fungsi format ...
Dan inilah ujungnyaDengan dan mulaiDengan fungsi prototipe ...
sumber
{0}{1}
,{0}
akan diganti terlebih dahulu, dan kemudian semua kemunculan{1}
dalam teks yang sudah diganti dan format aslinya akan diganti.Ini adalah variasi lebih cepat / sederhana (dan prototipikal) dari fungsi yang diposting Josh:
Pemakaian:
Saya menggunakan ini sangat banyak sehingga saya hanya menyamakannya
f
, tetapi Anda juga dapat menggunakan lebih banyak verboseformat
. misalnya'Hello {0}!'.format(name)
sumber
Banyak fungsi di atas (kecuali milik Julian Jelfs) mengandung kesalahan berikut:
Atau, untuk varian yang menghitung mundur dari akhir daftar argumen:
Inilah fungsi yang benar. Ini adalah varian prototip dari kode Julian Jelfs, yang saya buat sedikit lebih ketat:
Dan di sini adalah versi yang sedikit lebih maju dari yang sama, yang memungkinkan Anda untuk keluar dari kawat gigi dengan menggandakannya:
Ini berfungsi dengan benar:
Berikut ini adalah implementasi bagus lainnya oleh Blair Mitchelmore, dengan banyak fitur tambahan yang bagus: https://web.archive.org/web/20120315214858/http://blairmitchelmore.com/javascript/string.format
sumber
Membuat fungsi format yang mengambil koleksi atau array sebagai argumen
Pemakaian:
Kode:
sumber
String.prototype
?Ada (agak) opsi resmi: jQuery.validator.format .
Dilengkapi dengan jQuery Validation Plugin 1.6 (setidaknya).
Cukup mirip dengan yang
String.Format
ditemukan di .NET.Edit tautan rusak Tetap.
sumber
Jika Anda menggunakan plugin validasi, Anda dapat menggunakan:
jQuery.validator.format("{0} {1}", "cool", "formatting") = 'cool formatting'
http://docs.jquery.com/Plugins/Validation/jQuery.validator.format#templateargumentargumentN ...
sumber
Meskipun tidak persis apa yang diminta Q, saya telah membangun yang serupa tetapi menggunakan placeholder yang dinamai bukan bernomor. Saya pribadi lebih suka menyebutkan argumen dan hanya mengirim objek sebagai argumen untuk itu (lebih verbose, tetapi lebih mudah untuk mempertahankan).
Berikut ini contoh penggunaan ...
sumber
Menggunakan browser modern, yang mendukung EcmaScript 2015 (ES6), Anda dapat menikmati String Template . Alih-alih memformat, Anda dapat langsung menyuntikkan nilai variabel ke dalamnya:
Perhatikan bahwa string templat harus ditulis menggunakan tanda tik kembali (`).
sumber
Tidak ada jawaban yang disajikan sejauh ini yang tidak memiliki optimalisasi penggunaan enklosur untuk menginisialisasi sekali dan menyimpan ekspresi reguler, untuk penggunaan selanjutnya.
Juga, tidak ada contoh yang menghargai implementasi format () jika sudah ada.
sumber
Ini milik saya:
Bukan bukti peluru tetapi bekerja jika Anda menggunakannya dengan bijaksana.
sumber
Jauh melewati akhir musim tetapi saya baru saja melihat jawaban yang diberikan dan memiliki nilai pasokan saya:
Pemakaian:
Metode:
Hasil:
sumber
Sekarang Anda dapat menggunakan Literal Templat :
sumber
Inilah versi saya yang dapat melarikan diri '{', dan membersihkan tempat-tempat yang belum ditetapkan tersebut.
sumber
Jawaban berikut mungkin yang paling efisien tetapi memiliki peringatan hanya menjadi cocok untuk 1 hingga 1 pemetaan argumen. Ini menggunakan cara tercepat untuk menggabungkan string (mirip dengan stringbuilder: array string, bergabung). Ini kode saya sendiri. Mungkin membutuhkan pemisah yang lebih baik.
Gunakan seperti:
sumber
Ini melanggar prinsip KERING, tapi ini solusi singkat:
sumber
sumber
Saya tidak bisa mendapatkan jawaban Josh Stodola untuk bekerja, tetapi yang berikut ini berhasil untuk saya. Perhatikan spesifikasi
prototype
. (Diuji pada IE, FF, Chrome, dan Safari.):s
benar-benar harus menjadi clone darithis
agar tidak menjadi metode destruktif, tapi itu tidak benar-benar diperlukan.sumber
Memperluas jawaban hebat adamJLev di atas , berikut adalah versi TypeScript:
sumber
Saya memiliki plunker yang menambahkannya ke prototipe string: string.format Ini tidak hanya sesingkat beberapa contoh lainnya, tetapi jauh lebih fleksibel.
Penggunaannya mirip dengan versi c #:
Juga, menambahkan dukungan untuk menggunakan properti nama & objek
sumber
Anda juga dapat menutup array dengan penggantian seperti ini.
atau kamu bisa coba
bind
sumber