Sắp xếp danh sách, họ tên tiếng Việt theo ABC online
Sắp xếp danh sách tiếng Việt đúng thứ tự từ điển (a ă â, d đ, thanh điệu), so sánh chuỗi, tạo khoá sắp xếp cho DB, nhóm theo chữ cái, xếp theo tên.
Kết quả
Bấm “Chạy” để xem kết quả.
Gửi danh sách (items, hoặc mỗi dòng một mục trong text), API trả về danh sách xếp theo thứ tự từ điển tiếng Việt: chữ cái a ă â b c d đ e ê g h i k l m n o ô ơ p q r s t u ư v x y, rồi đến thanh điệu ngang < huyền < hỏi < ngã < sắc < nặng, rồi đến chữ hoa thường: đúng thứ tự của từ điển tiếng Việt và bảng so sánh "vi" của CLDR, khác với thứ tự byte của cơ sở dữ liệu (chữ "Đ" bị xếp sau "Z") hay lỗi vi_VN tồn tại lâu năm của glibc. Thanh điệu được so theo từng âm tiết nên "hoà" và "hòa" bằng nhau; số được xếp tự nhiên (mục 9 trước mục 10); ignore_tones chỉ so chữ cái; có thêm case_sensitive, desc, unique.
by=given_name xếp họ tên như danh sách lớp, danh sách nhân viên (theo tên, rồi họ, rồi tên đệm: An đứng trước Bình bất kể họ gì); danh sách object được xếp theo field. Các thao tác khác: compare (a, b → -1 / 0 / 1), key (khoá sort_key xếp được theo byte để lưu vào cột cơ sở dữ liệu, và search_key không dấu), group (nhóm theo chữ cái đầu, Đ tách riêng khỏi D, cho danh bạ) và normalize (đặt dấu kiểu cũ / mới: hòa ↔ hoà, thúy ↔ thuý).
Tối đa 10.000 mục mỗi lần; chỉ tính toán, không lưu dữ liệu.
Dùng trong code của bạn
curl -X POST "https://apibox.io.vn/v1/vn-sort" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["Đức","Dũng","anh","ăn","An","bà","ba","bá","item 10","item 9"]}'const res = await fetch('https://apibox.io.vn/v1/vn-sort', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"items": [
"Đức",
"Dũng",
"anh",
"ăn",
"An",
"bà",
"ba",
"bá",
"item 10",
"item 9"
]
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/vn-sort",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"items": ["Đức", "Dũng", "anh", "ăn", "An", "bà", "ba", "bá", "item 10", "item 9"]},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/vn-sort');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"items":["Đức","Dũng","anh","ăn","An","bà","ba","bá","item 10","item 9"]}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Tài liệu API → Nhận API key miễn phí
Hỏi đáp
Sao không sắp xếp ngay trong cơ sở dữ liệu?
Nhiều hệ (SQLite / D1, MongoDB mặc định, collation nhị phân) xếp theo mã ký tự nên Đ đứng sau Z và chữ có dấu bị dồn xuống cuối. Lưu sort_key từ action=key để xếp đúng ở bất kỳ đâu.
Thứ tự thanh điệu thế nào?
Ngang, huyền, hỏi, ngã, sắc, nặng: thứ tự của từ điển tiếng Việt và bảng so sánh tiếng Việt của CLDR / ICU (ba, bà, bả, bã, bá, bạ).
"Hoà" và "hòa" có như nhau không?
Có: thanh điệu được so theo âm tiết nên hai cách đặt dấu được xếp và so sánh như nhau; action=normalize đưa về một kiểu thống nhất.