التابع String.unicode_normalize!
في روبي
يوحد التابع unicode_normalize!
ترميز السلسلة النصية التي استدعيت معه باستخدام ترميزات يونيكود الموحدة (Unicode normalizations) التالية: NFC، أو NFD، أو NFKC، أو NFKD. يطلق التابع استثناءً إذا كانت السلسلة النصية غير مُرمّزة بترميز اليونيكود.
يُقصَد بترميز اليونيكود (Unicode Encoding) أيًا من الترميزات التالية: UTF-8، أو UTF-16BE/LE، أو UTF-32BE/LE، أو GB18030، أو UCS_2BE، أو UCS_4BE.
تُحوَّل السلسلة النصية إلى الترميز UTF-8، إذا كانت مُرمّزة بترميز مغاير له، مما يجعل العملية أبطأ فيما إذا كانت السلاسل مُرمّزة بالترميز UTF-8.
البنية العامة
unicode_normalize!(form=:nfc)
المعاملات
form
يحدد نمط ترميزات يونيكود الموحدة في نسخة السلسلة النصية المعطاة، ويأخذ إحدى القيم التالية:
nfc:
(القيمة الافتراضية)nfd:
nfkc:
nfkd:
القيمة المعادة
تُعاد السلسلة النصية المعطاة بعد تغيير ترميزها إلى ترميز موحد باستخدام النمط form
. يطلق استثناء إذا كانت السلسلة النصية غير مُرمَزة بترميز اليونيكود.
أمثلة
أمثلة على استعمال التابع unicode_normalize!
:
string= "a\u0300"
string.unicode_normalize! #=> "\u00E0"
string #=> "\u00E0"
"\xE0".force_encoding('ISO-8859-1').unicode_normalize!(:nfd)
#=> Encoding::CompatibilityError raised
انظر أيضًا
- التابع
force_encoding
: يغير ترميز السلسلة النصية التي استدعي معها إلى ترميز مُحدد ثم يعيدها. - التابع
unicode_normalize
: يعيد نسخة موحدة (normalized string، أي ذات ترميز موحد) للسلسلة النصية التي استدعيت معه باستخدام أحد ترميزات يونيكود الموحدة. - التابع
unicode_normalized?
: يتحقق إذا كانت السلسلة النصية التي استدعيت معه ذات ترميز موحَّد باستخدام أحد ترميزات يونيكود الموحدة (Unicode normalizations).