DANH MỤC: Linh Tinh

Hướng dẫn tạo bộ chuyển đổi Tiếng Việt kiểu mới


Thời gian gần đây cộng đồng mạng đang nổi lên phong trào chuyển đổi tiếng việt kiểu mới. Và đương nhiên là trên mạng cũng đã có khá là nhiều tools, app thực hiện việc chuyển đổi rồi, và bài viết này mình sẽ hướng dẫn mọi người viết 1 ứng dụng thực hiện việc chuyển đổi.

1, Thuật toán.

Thực ra việc chuyển đổi này vô cùng đơn giản, chúng ta chỉ cần bắt các ký tự cần chuyển đổi và thực thi chuyển đổi nó bằng cách replace qua Regular expression.

Các ký tự cần chuyển đổi sẽ gồm những từ sau:

Ký Tự gốc Ký tự mới Chú Thích
tr c  
q k  
d z  
c* k c + với 1 ký tự nào đó cũng thành k
gi z  
ch  c  
ngh q ngh + với 1 ký tự nào đó cũng thành q
đ d  
gh g  
nh n'  
kh x  
ph f  
r z  
th w  

2, Viết Code.

Sau khi đã tìm ra được ý tưởng thì giờ chúng ta sẽ chuyển đổi nó thành code. Ở đây mình sẽ sử dụng javascript cho tất cả mọi người cùng làm được.

Code

'use strict';
//Khởi tạo mảng chứa các ký tự sẽ được chuyển đổi.
var match = [
    ['tr', 'c'],
    ['q', 'k'],
    ['d', 'z'],
    ['c(?!h)', 'k'],
    ['gi', 'z'],
    ['ch', 'c'],
    ['ngh?', 'q'],
    ['\u0111', 'd'],
    ['gh', 'g'],
    ['nh', 'n\''],
    ['kh', 'x'],
    ['ph', 'f'],
    ['r', 'z'],
    ['th', 'w'],
];

//chuyển đổi ký tự đầu tiên thành in hoa
function capitalize(a) {
    return a.replace(new RegExp('\b\w', 'g'), function(i){ return i.toUpperCase() })
};

//thực hiện chuyển đổi.
function convert(val, match) {
    return val.replace(new RegExp(match[0], 'g'), match[1]).replace(new RegExp(capitalize(match[0]), 'g'), capitalize(match[1])).replace(new RegExp(match[0].toUpperCase(), 'g'), match[1].toUpperCase());
};

//lặp dữ liệu mảng và thực hiện chuyển đổi.
function build(val) {
    if ('string' !== typeof val)
        val = String(val);

    var tmp = val;
    match.forEach(function(index) {
        tmp = convert(tmp, index);
    });

    return tmp;
}

Chỉ mất khoảng 30 dòng là chúng ta đã xây dựng thành công tools chuyển tiếng việt kiểu mới rồi.

Bây giờ muốn thực hiện bạn chỉ việc gọi hàm build và chuyền vào đó chuỗi cần chuyển đổi là ok.

3, Resource.

DOWNLOAD DEMO

Nguồn: Toidicode.com

Thông tin tác giả

Vũ Thanh Tài

Vũ Thanh Tài

The best way to learn is to share

Hãy tham gia group facebook để cùng giao lưu chia sẻ kiến thức! Tham Gia