Dựa trên chuỗi kí tự được nhập bởi người dùng để thực hiện các yêu cầu sau từ client bằng javascript:
Nội dung solution dưới đây sẽ giải quyết một bài toán (một tính năng) cụ thể mà tôi đã phát triển, được kiểm chứng và nộp cho khách hàng.
Ví dụ: Thực hiện validate hạng mục địa chỉ (address), chỉ cho phép enduser nhập các kí tự tồn tại trong bảng mã SHIFT-JIS và thông báo message error cho enduser biết các kí tự bị lỗi.
Tham khảo bảng mã shiftjis
Chú ý : Mã kí tự (character code) trong thế giới javascript là Unicode.
Trong NPM có một thư viện tên là encoding-japanese, nên tôi sử dụng nó. Chi tiết về cách setup lib xem tại encoding-japanese
Sau đây là step by step chi tiết cho solution bên trên. Giả sử input của solution là biến chứa chuỗi input có tên là strInput
Step 1: Lấy encoding hiện tại của chuỗi input, bằng dòng code
var detectedOrg = Encoding.detect(data);
Step 2: Lặp từng kí tự của chuỗi input strInput, với mỗi kí tự thứ i của chuỗi thì thực hiện
var strs = data.charAt(i);
var ucd = data.charCodeAt(i);
var shiftjisCode = Encoding.convert([ucd], 'SJIS');
var detected = Encoding.detect(shiftjisCode);
var strConvert2Org = Encoding.convert(shiftjisCode, {
to: detectedOrg,
from: 'SJIS',
type: 'string'
});
Thực hiện so sánh kí tự vừa nhận được strConvert2Org với kí tự ban đầu strs.
Kết thúc vòng lặp ta được một chuỗi các kí tự không hợp lệ
/**
* Check charater exist in Shift-JIS (SJIS)
*
* @return: String - rỗng: nếu chuỗi input hợp lệ, ngược lại: là chuỗi các kí tự không hợp lệ
*/
checkSJISCharacters : function (data) {
var detectedorg = Encoding.detect(data);
var strs = "";
var stre = "";
var ucd = 0;
var len = (data && typeof data === 'string') ? data.length : 0;
for(var i = 0; i < len; i++){
strs = data.charAt(i);
ucd = data.charCodeAt(i);
var shiftjisCode = Encoding.convert([ucd], 'SJIS');
// Detect the character encoding.
var detected = Encoding.detect(shiftjisCode);
if (detected === 'SJIS') {
continue;
}
var convertString = Encoding.convert(shiftjisCode, {
to: detectedorg,
from: 'SJIS',
type: 'string'
});
if(convertString !== strs) stre += strs;
}
return (stre);
}
Chú ý: Áp dụng cho các bài toán phù hợp. Chẳng hạn như với các kí tự trong bảng mã khác mà thư viện hỗ trợ.
CHÚC CÁC BẠN THÀNH CÔNG!
You need to login in order to like this post: click here
YOU MIGHT ALSO LIKE