Giải pháp đầu tiên không hoạt động đối với bất kỳ bảng chữ cái UTF-8. (Nó sẽ cắt văn bản, chẳng hạn như Їжак). Tôi đã quản lý để tạo một chức năng không sử dụng RegExp và sử dụng hỗ trợ UTF-8 tốt trong công cụ JavaScript. Ý tưởng rất đơn giản nếu một biểu tượng bằng chữ in hoa và chữ thường nó là một ký tự đặc biệt. Ngoại lệ duy nhất được thực hiện cho khoảng trắng.
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;
}
Cập nhật: Xin lưu ý rằng giải pháp này chỉ hoạt động đối với các ngôn ngữ có chữ in hoa và chữ in hoa nhỏ. Trong các ngôn ngữ như tiếng Trung Quốc, điều này sẽ không hoạt động.
Cập nhật 2: Tôi đã đến với giải pháp ban đầu khi tôi đang làm việc trên một tìm kiếm mờ. Nếu bạn cũng cố gắng loại bỏ các ký tự đặc biệt để thực hiện chức năng tìm kiếm, có một cách tiếp cận tốt hơn. Sử dụng bất kỳ thư viện chuyển ngữ nào sẽ tạo ra chuỗi của bạn chỉ từ các ký tự Latinh và sau đó Regapi đơn giản sẽ thực hiện tất cả các phép thuật loại bỏ các ký tự đặc biệt. (Điều này cũng sẽ hiệu quả với người Trung Quốc và bạn cũng sẽ nhận được lợi ích phụ bằng cách thực hiện Tromsø
== Tromso
).