Toidicode.com

Toidicode.com

BASIC TO ADVANCE

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

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

1 Comments

Mình có làm tool chuyển Tiếng Việt sang Tiếq Việt. Mong anh em dùng thứ và góp ỳ giúp mình nha, cảm ơn anh em!
https://freetoolonline.com/cong-cu-chuyen-doi-chu-quoc-ngu-tieng-viet-thanh-tieq-viet-kieu-moi.html
 

Khoa

6 năm trước

Bình luận

Captcha