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.
Đă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!
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
7 năm trước