PDA

View Full Version : متد ()ToString().Normalize. ؟



saeed729
پنج شنبه 28 خرداد 1394, 09:48 صبح
سلام دوستان.

می خواستم بدونم متد ()ToString().Normalize. چه کاربردی داره ؟

با تشکر.

esafb52
پنج شنبه 28 خرداد 1394, 10:38 صبح
سلام این رو ببین جواب رو گفته ولی قبلش گوگل کنی نتایج کاملتری میگری
http://www.dotnetperls.com/normalize

jeson_park
پنج شنبه 28 خرداد 1394, 12:39 عصر
بعضی از کاراکتر های یونیکد چند فرم برای نمایش دارن که باعث سخت تر شدن و پیچیده شدن عمل های مثل جستجو و یا مرتب سازی اون ها می شه
مثلا کارکتر "ắ" به 2 فرم زیر نمایش داده می شه

U+1EAF
U+0103 U+0301
U+0061 U+0306 U+0301

استاندار یونیکد یه سری مراحل به نام normalization تعریف کرده که کاری می کنه که فقط یه نمایش باینری از کارکتر های یونیکد برگشت داده بشه
در دات نت از 4 حالت normalization پشتیبانی می شه (C, D, KC, and KD)
جایی از توضیحات من واضح نبود تکه کد کامل رو قرار بدید و بگید تا بیشتر توضیح بدم
اطلاعات بیشتر (https://msdn.microsoft.com/en-us/library/8eaxk1x2%28v=vs.110%29.aspx)

saeed729
پنج شنبه 28 خرداد 1394, 16:33 عصر
ممنون از راهنمایی شما.
من کد زیر رو تست کردم تو نتیجه تغییری ندیدم!



string strName = "GUIDóúûáñ";

textBox1.Text = strName.Normalize();
textBox1.Text = strName.Normalize(NormalizationForm.FormC);
textBox1.Text = strName.Normalize(NormalizationForm.FormD);
textBox1.Text = strName.Normalize(NormalizationForm.FormKC);
textBox1.Text = strName.Normalize(NormalizationForm.FormKD);



ممنون میشم با یک مثال بیشتر توضیح بدید.

jeson_park
دوشنبه 01 تیر 1394, 08:10 صبح
ممنون از راهنمایی شما.
من کد زیر رو تست کردم تو نتیجه تغییری ندیدم!



string strName = "GUIDóúûáñ";

textBox1.Text = strName.Normalize();
textBox1.Text = strName.Normalize(NormalizationForm.FormC);
textBox1.Text = strName.Normalize(NormalizationForm.FormD);
textBox1.Text = strName.Normalize(NormalizationForm.FormKC);
textBox1.Text = strName.Normalize(NormalizationForm.FormKD);



ممنون میشم با یک مثال بیشتر توضیح بدید.
دوست عزیز عرض کردم خدمتتون که
تغییر ظاهری نیست
به تعریفی که MSDN گفته دقت کنید

Returns a new string whose textual value is the same as this string, but whose binary representation is in the specified Unicode normalization form
ایم متد نمایش باینری کارکتر رو تغییر می ده و ظاهرش رو کاری نداره

برای مشاهده تغییر می توندی از Ildasm.exe (IL Disassembler) (https://msdn.microsoft.com/en-us/library/f7dy01k1%28v=vs.110%29.aspx) استفاده کنید در مسیر زیر موجود هست

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools