مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

princofpersia

عضویت از 1395/02/28

مشکل فونتیک در مقایسه دو رشته

  • چهارشنبه 29 دی 1395
  • 14:28
تشکر میکنم

سلام دوستان ، ببخشید اگر تایپیک ایجاد کردم. اما یک مشگل دارم که برای پروژم حلش واجب. برنامه من قرار دیکشنری باشه تو زبان #C و پایگاه داده اکسس که شمال چهار زبان فارسی و عربی و ترکی و انگلیسی. من سه زبان رو انجام دادم اما در زبان ترکی به مشکل برخوردم  که اونم مشکل فو نتیک حساب میشه  برای مثال :کلمه (Güçlü fikirli)  در زبان ترکی داری دو حرف (ü) میباشد که همین دو حرف در عمل جستوجو مشکل ساز میشود. من کدی که باهاش ارتباط دادم و عمل سرچ انجام میدم قرار میدم شما بگید چطور این مشکل رو حل کنم . واقعا ممنون میشم اگر کمکم کنید.

کد #C:

{
                        string FaWord = DataSET.Tables["CSDic"].Rows[m].ItemArray[3].ToString()
                                    .ToLower();
                     string box1;
                        box1 = BOX1.Text;
                        
                        if (string.Compare(FaWord,box1) == 0)
                        {

                            BOX2.Text =DataSET.Tables["CSDic"].Rows[m].ItemArray[0].ToString()
                                    .ToLower();
                            LBFound.Text  = FaWord;
                            BOX1.Text = "";
                            Pr.Value = cn; P.Visible = true; break;
                            }
               
                    }

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • چهارشنبه 29 دی 1395
  • 14:45

با تغییر کاراکترهای خاص ترکی به لاتین می تونید این مشکل رو حل کنید و جستجوی خودتون رو بر حسب کاراکترهای لاتین انجام بدید . برای این کار می تونید از متد زیر استفاده کنید :

    public static string ConvertTurkishChars(string text)
            {
                String[] olds = { "Ğ", "ğ", "Ü", "ü", "Ş", "ş", "İ", "ı", "Ö", "ö", "Ç", "ç" };
                String[] news = { "G", "g", "U", "u", "S", "s", "I", "i", "O", "o", "C", "c" };
     
                for (int i = 0; i < olds.Length; i++)
                {
                    text = text.Replace(olds[i], news[i]);
                }     
                return text;
            }

کاربر سایت

princofpersia

عضویت از 1395/02/28

  • چهارشنبه 29 دی 1395
  • 15:39

ممنون از پاسخ شما دوست عزیز. من از تابع Replace به عنوان تک  حروفیم استفاده کردم مشکل حل نشده بعد کمی دیباگ کردن متوجه شدم مشکل من توی textbox نیست بلکه متنی که باهاش مقایسه انجام میشهیعنی مقداری که از فیلد خوانده میشه اون نمیشه حروف ترکیش را عوض کردی یعنی : متغییر faword  که نمیشه مقدار اونو replace کرد. خواهشن کمک کنید

string FaWord = DataSET.Tables["CSDic"].Rows[m].ItemArray[3].ToString()
                                    .ToLower();

if (string.Compare(FaWord,box1) == 0)

کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • پنجشنبه 30 دی 1395
  • 11:06

شما با متد بالا هم مقدار texbox و FaWord را Replace کردید و سپس مقایسه کردید؟

کاربر سایت

princofpersia

عضویت از 1395/02/28

  • پنجشنبه 30 دی 1395
  • 11:16

مشکل منم همینجاس وقتی faword را replace میکنم اعمال نمیشه روش دقیقا همون مقداری که از پایگاه داده خونده رو بر میگردونه.

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)