PEMBARUAN : Harap dicatat bahwa ini adalah solusi yang harus diterapkan ke browser lama atau platform non-browser, dan tetap hidup untuk tujuan instruksional. Silakan merujuk ke jawaban @radicand di bawah ini untuk jawaban yang lebih terkini.
Ini adalah unicode, string yang di-escape. Pertama, string itu lolos, lalu dikodekan dengan unicode. Untuk mengubah kembali ke normal:
var x = "http\\u00253A\\u00252F\\u00252Fexample.com";
var r = /\\u([\d\w]{4})/gi;
x = x.replace(r, function (match, grp) {
return String.fromCharCode(parseInt(grp, 16)); } );
console.log(x);
x = unescape(x);
console.log(x);
Untuk menjelaskan: Saya menggunakan ekspresi reguler untuk dicari \u0025
. Namun, karena saya hanya memerlukan sebagian dari string ini untuk operasi penggantian, saya menggunakan tanda kurung untuk mengisolasi bagian yang akan saya gunakan kembali , 0025
. Bagian yang terisolasi ini disebut grup.
Bagian gi
di akhir ekspresi menunjukkan bahwa itu harus cocok dengan semua contoh dalam string, bukan hanya yang pertama, dan pencocokan harus peka huruf besar / kecil. Ini mungkin terlihat tidak perlu diberikan contohnya, tetapi ini menambah keserbagunaan.
Sekarang, untuk mengonversi dari satu string ke string berikutnya, saya perlu menjalankan beberapa langkah pada setiap grup dari setiap pertandingan, dan saya tidak dapat melakukannya hanya dengan mengubah string. Bermanfaat, operasi String.replace dapat menerima sebuah fungsi, yang akan dijalankan untuk setiap pertandingan. Kembalinya fungsi itu akan menggantikan kecocokan itu sendiri dalam string.
Saya menggunakan parameter kedua yang diterima fungsi ini, yang merupakan grup yang perlu saya gunakan, dan mengubahnya menjadi urutan utf-8 yang setara, kemudian menggunakan unescape
fungsi bawaan untuk memecahkan kode string ke bentuk yang tepat.