مرتبسازی الفبایی چیست؟
مرتبسازی الفبایی (Alphabetical Sorting) فرآیندی است که در آن مجموعهای از رشتههای متنی بر اساس ترتیب استاندارد حروف یک زبان چیده میشوند. در علوم کامپیوتر، این فرآیند معمولاً از الگوریتمهایی مانند QuickSort یا MergeSort استفاده میکند. اهمیت این موضوع در زبان فارسی به دلیل وجود حروف خاص مانند "گ"، "چ"، "پ" و "ژ" دوچندان میشود، زیرا بسیاری از سیستمهای ساده (مانند اکسلهای قدیمی) ممکن است ترتیب یونیکد این حروف را به درستی تشخیص ندهند. ابزار WordAbyss از استاندارد Intl.Collator برای تضمین صحت ترتیب در زبان فارسی استفاده میکند.
منطق محاسباتی (الگوریتم مقایسه)
برای مرتبسازی صحیح کلمات فارسی که شامل اعداد یا حروف عربی هستند، ما از تابع مقایسهای زیر استفاده میکنیم که حساسیت به زبان (Locale Sensitivity) دارد:
// JavaScript Intl.Collator for Persian
const sorter = new Intl.Collator("fa-IR", {
numeric: true, // "File 2" comes before "File 10"
sensitivity: "base",
ignorePunctuation: true
});
lines.sort(sorter.compare);* این متد تضمین میکند که اعدادی که در متن وجود دارند (مثل "درس ۱" و "درس ۱۰") به ترتیب عددی مرتب شوند، نه صرفاً بر اساس کاراکتر اول.
مثالهای کاربردی در ایران
۱. لیست حضور و غیاب مدارس
مرتبسازی اسامی دانشآموزان (مثلاً: "آرش"، "بهنام"، "پریسا") برای دفتر کلاسی. این ابزار حروف "پ" را دقیقاً بعد از "ب" قرار میدهد، نه در انتهای لیست (مشکل رایج یونیکد).
۲. دستهبندی محصولات فروشگاهی
مرتبسازی لیست موجودی انبار: "آیفون ۱۳"، "آیفون ۱۳ پرو"، "سامسونگ S21". قابلیت حذف تکراریها در اینجا برای تمیز کردن دیتابیس بسیار حیاتی است.
۳. کدهای شهرها و استانها
مرتبسازی لیست شهرها مانند "تهران"، "اصفهان"، "تبریز" و "یزد" برای ایجاد منوهای کشویی (Dropdown) در وبسایتهای ایرانی.
خطاهای رایج در مرتبسازی
- یکسان پنداشتن "ی" و "ي": بسیاری از متون کپی شده از وبسایتهای عربی دارای "ي" (با دو نقطه) هستند که در مرتبسازی فارسی جایگاه متفاوتی دارد.
- فضاهای خالی پنهان (Trim): وجود فاصله (Space) در ابتدای خط باعث میشود آن خط در صدر لیست قرار گیرد. همیشه از گزینه Trim استفاده کنید.
- نادیده گرفتن اعداد: در مرتبسازی ساده ASCII، عدد "10" قبل از "2" قرار میگیرد. ابزار ما از مرتبسازی "طبیعی" (Natural Sort) استفاده میکند.
