التسوية و الفرز
بعض أحرف Unicode لها تمثيلات ثنائية مكافئة متعددة، تتكون من مجموعات من أحرف Unicode مدمجة و / أو مركبة. وبالتالي، يمكن أن تبدو سلسلتين متطابقتين و لكن فعلياً تتكون كل منهما من أحرف مختلفة. وجود تمثيلات متعددة لحرف واحد يجعل عمليات الفرز أكثر تعقيداً. يتم حل هذه المشكلة عن طريق تقليل التكرار لكل سلسلة، ثم استخدم مقارنة ترتيبية لفرز السلاسل.
يعرّف معيار Unicode عملية تسمى "التسوية" التي ترجع تمثيل ثنائي واحد لحرف عند إعطائها أي من التمثيلات الثنائية المكافئة لذلك الحرف. يعرّف معيار Unicode أربعة خوارزميات مختلفة، تسمى نماذج التسوية، يمكنك استخدامها لتسوية سلسلة. كل نموذج تسوية يتبع قواعد مختلفة و بالتالي يعطي تمثيل ثنائي مختلف لسلسلة مدخلة. ومع ذلك، إذا تم تسوية سلسلتين إلى نفس نموذج التسوية، يمكن مقارنة السلسلتين فيما بعد باستخدام مقارنة ترتيبية (بدون تحسس لحالة الأحرف).
المقارنة الترتيبية لسلسلتين هي مقارنة ثنائية للقيمة الرقمية أو نقطة الرمز لكل زوج مطابق من البنيات: Char في الكائنين من نوع: String اللذان يمثلان السلاسل التي تمت تسويتها. يوفر برنامج .NET Framework العديد من الأساليب التي يمكنها إجراء مقارنة ترتيبية.
يمكن للتطبيق الخاص بك استخدام العملية التالية لتسوية و فرز السلاسل:
الحصول على سلسلتين للفرز من مصدر مدخل مثل ملف أو إدخال مستخدم.
استخدام أسلوب String.Normalize() لتسوية السلسلتين إلى نموذج التسوية C، أو أسلوب String.Normalize(NormalizationForm) لتسوية السلسلتين إلى نموذج تسوية من اختيارك.
استخدام مقارنة سلسلة ترتيبية مثل أسلوب: Compare(String, Int32, String, Int32, Int32, StringComparison) مع قيمة Ordinal أو قيمة OrdinalIgnoreCase لمقارنة سلسلتين. عملية المقارنة تحدد ما إذا كانت السلسلة الأولى تسبق السلسلة الثانية لغوياً أم تتساوي السلسلتين لغوياً.
الإرسال سلاسل في الإخراج المفروز استناداً إلى نتائج الخطوة 3. إذا كانت السلاسل غير متساوية، الإرسال بالسلاسل في الترتيب الذي ينجح في ترتيب تصاعدي أو تنازلي.
في حالة تساوي السلاسل، يمكن إصدار أياً من السلسلتين أولاً إلا إذا كان من المناسب ترتيب السلاسل استناداً إلى صفة مميزة أخرى غير الترتيب اللغوي. على سبيل المثال، إذا كان التطبيق يقوم بفرز أسماء الملفات و لكن يقوم أيضاً بكتابة خصائص كل ملف في المخرج, فإنه قد يكتب أسماء الملفات المتساوية بترتيب تواريخ إنشاء الملفات.
تكرار هذه العملية حتى يتم فرز كافة المدخلات.
للحصول على مزيد من المعلومات حول دعم نموذج التسوية في .NET Framework، راجع وصف التعداد: NormalizationForm. للحصول على معلومات إضافية حول تسوية سلسلة، راجع أسلوب: Normalize .
للحصول على معلومات إضافية حول التسوية، و تحليلات الأحرف، و التساوي راجع ، Unicode Standard Annex # 15, ""Unicode Normalization Forms في الصفحة الرئيسية Unicode.
راجع أيضًا:
المبادئ
مقارنة البيانات و فرزها لثقافة محددة