Jawaban:
Anda harus menggunakan fungsi ganti string, dengan satu regex. Dengan asumsi karakter khusus, Anda berarti apa pun yang bukan huruf, berikut ini solusinya:
const str = "abc's test#s";
console.log(str.replace(/[^a-zA-Z ]/g, ""));
str.replace(/[^a-zA-Z0-9]/g, "")
str.replace(/[^a-zA-Z0-9 ]/g, "");
pemberitahuan ini ada ruang antara 0-9 dan]
Anda dapat melakukannya dengan menentukan karakter yang ingin Anda hapus:
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
Atau, untuk mengubah semua karakter kecuali angka dan huruf, coba:
string = string.replace(/[^a-zA-Z0-9]/g, '');
/[^a-zA-Z0-9]/g
()
dan whitespaces
dalam string.text().replace(/[ ()]/g, '')
Solusi pertama tidak berfungsi untuk alfabet UTF-8. (Ini akan memotong teks seperti Привіт). Saya telah berhasil membuat fungsi yang tidak menggunakan RegExp dan menggunakan dukungan UTF-8 yang baik di mesin JavaScript. Idenya sederhana jika simbol sama dalam huruf besar dan kecil itu adalah karakter khusus. Satu-satunya pengecualian dibuat untuk spasi putih.
function removeSpecials(str) {
var lower = str.toLowerCase();
var upper = str.toUpperCase();
var res = "";
for(var i=0; i<lower.length; ++i) {
if(lower[i] != upper[i] || lower[i].trim() === '')
res += str[i];
}
return res;
}
Pembaruan: Harap dicatat, bahwa solusi ini hanya berfungsi untuk bahasa di mana ada huruf kecil dan besar. Dalam bahasa seperti Cina, ini tidak akan berhasil.
Pembaruan 2: Saya menemukan solusi asli ketika saya sedang mengerjakan pencarian fuzzy. Jika Anda juga mencoba untuk menghapus karakter khusus untuk mengimplementasikan fungsi pencarian, ada pendekatan yang lebih baik. Gunakan pustaka transliterasi yang akan menghasilkan Anda hanya string dari karakter Latin dan kemudian Regexp sederhana akan melakukan semua keajaiban menghapus karakter khusus. (Ini akan bekerja untuk orang Cina juga dan Anda juga akan menerima manfaat sampingan dengan membuat Tromsø
== Tromso
).
Saya tidak tahu JavaScript, tetapi tidak bisakah menggunakan regex?
Sesuatu seperti [^\w\d\s]
akan cocok dengan apa pun kecuali digit, karakter, dan spasi putih. Itu hanya akan menjadi pertanyaan untuk menemukan sintaks dalam JavaScript.
Saya mencoba solusi Seagul yang sangat kreatif, tetapi ternyata itu memperlakukan angka juga sebagai karakter khusus, yang tidak sesuai dengan kebutuhan saya. Jadi di sini adalah tweak saya (gagal aman) dari solusi Seagul ...
//return true if char is a number
function isNumber (text) {
if(text) {
var reg = new RegExp('[0-9]+$');
return reg.test(text);
}
return false;
}
function removeSpecial (text) {
if(text) {
var lower = text.toLowerCase();
var upper = text.toUpperCase();
var result = "";
for(var i=0; i<lower.length; ++i) {
if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '')) {
result += text[i];
}
}
return result;
}
return '';
}
reg
dalam fungsi pertama Anda.
Coba gunakan yang ini
var result= stringToReplace.replace(/[^\w\s]/gi, '')
di sini ^ carat adalah untuk negasi \ w untuk [a-zA-Z0-9_] karakter kata dan \ s untuk spasi / [] / gi untuk global
dot (.) tidak dapat dianggap spesial. Saya telah menambahkan syarat ATAU untuk jawaban Mozfet & Seagull:
function isNumber (text) {
reg = new RegExp('[0-9]+$');
if(text) {
return reg.test(text);
}
return false;
}
function removeSpecial (text) {
if(text) {
var lower = text.toLowerCase();
var upper = text.toUpperCase();
var result = "";
for(var i=0; i<lower.length; ++i) {
if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '') || (lower[i].trim() === '.')) {
result += text[i];
}
}
return result;
}
return '';
}
const input = `#if_1 $(PR_CONTRACT_END_DATE) == '23-09-2019' #
Test27919<alerts@imimobile.com> #elseif_1 $(PR_CONTRACT_START_DATE) == '20-09-2019' #
Sender539<rama.sns@gmail.com> #elseif_1 $(PR_ACCOUNT_ID) == '1234' #
AdestraSID<hello@imimobile.co> #else_1#Test27919<alerts@imimobile.com>#endif_1#`;
const replaceString = input.split('$(').join('->').split(')').join('<-');
console.log(replaceString.match(/(?<=->).*?(?=<-)/g));
Karakter khusus yang ingin Anda hapus dari string, siapkan daftar mereka dan kemudian fungsi ganti pengguna javascript untuk menghapus semua karakter khusus.
var str = 'abc'de#;:sfjkewr47239847duifyh';
alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));
atau Anda dapat menjalankan loop untuk seluruh string dan membandingkan satu karakter dengan kode ASCII dan membuat ulang string baru.