نمایش نتایج 1 تا 5 از 5

نام تاپیک: یافتن کلمات استفاده شده در یک متن با سی شارپ

  1. #1

    Question یافتن کلمات استفاده شده در یک متن با سی شارپ

    میشه با سی پشارپ گفت که کلمات فارسی استفاده شده در یک متن رو نمایش بده ؟؟؟
    یه سوال دیگه : آیا می شه گفت که آیا متغیر s که از نوع string و مقدارش برابر با مثلا "امیر" است ، این کلمه یا این مقدار در متغیر s2 هم که string است وجود دارد ؟؟؟
    آخرین ویرایش به وسیله jebreily : چهارشنبه 29 آبان 1398 در 15:44 عصر

  2. #2

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

    1. خوب متوجه سوالتون نشدم
    2. اگر میخواید بفهمید s در s2 هست یا نه، این کد جواب رو به شکل بولین میده:
    s2.Contains(s)

  3. #3

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

    نقل قول نوشته شده توسط jebreily مشاهده تاپیک
    میشه با سی پشارپ گفت که کلمات فارسی استفاده شده در یک متن رو نمایش بده ؟؟؟
    یه سوال دیگه : آیا می شه گفت که آیا متغیر s که از نوع string و مقدارش برابر با مثلا "امیر" است ، این کلمه یا این مقدار در متغیر s2 هم که string است وجود دارد ؟؟؟
    دنبال کاراکتر های بهم چسبیده ای می گردیم که اولا در گروه کاراکتر های یونیکد عربی باشند و ثانیا جزو حروف الفبا باشند :

    var regex = new System.Text.RegularExpressions.Regex("\\b((?=\\p{I sArabic})\\p{L})+");


    با این Regex میشه کلمات فارسی داخل متن رو پیدا کرد، فرضا نمایش کلمات، هر کلمه در یک سطر جداگانه :

    var regex = new System.Text.RegularExpressions.Regex("\\b((?=\\p{I sArabic})\\p{L})+");
    var text = "متن فارسی english persian آزمایش test پایان.یافت";
    var words = regex.Matches(text);
    var s = new StringBuilder();
    foreach (System.Text.RegularExpressions.Match word in words)
    {
    s.AppendLine(word.Value);
    }
    MessageBox.Show(s.ToString());


    یا نمایش کلمات با حذف موارد تکرار یک کلمه :

    var regex = new System.Text.RegularExpressions.Regex("\\b((?=\\p{I sArabic})\\p{L})+");
    var text = "متن فارسی english persian متن جدید text متن";
    var words = regex.Matches(text);
    var dic = new Dictionary<string, int>(StringComparer.CurrentCultureIgnoreCase);
    foreach (System.Text.RegularExpressions.Match word in words)
    {
    dic[word.Value] = 0;
    }
    var keys = new string[dic.Count];
    dic.Keys.CopyTo(keys, 0);
    MessageBox.Show(string.Join(Environment.NewLine, keys));


    برای جستجوی یک کلمه یا عبارت در متن دیگری می توانید از همون Regex ها کمک بگیرید، b\ باعث میشه که عبارت جستجو رو بصورت یک مورد مستقل پیدا کنه، نه چسبیده به کاراکتر های کناری :

    var s1 = "امیر";
    var regex = new System.Text.RegularExpressions.Regex("\\b" + s1 + "\\b");
    var s2 = "my name is امیر";
    var result = regex.IsMatch(s2);
    if (result)
    {
    MessageBox.Show("Found!");
    }
    else
    {
    MessageBox.Show("Not Found!");
    }


    فرضا کلمه امیر رو در متن مزامیر پیدا نخواهد کرد :

    var s1 = "امیر";
    var regex = new System.Text.RegularExpressions.Regex("\\b" + s1 + "\\b");
    var s2 = "مزامیر";
    var result = regex.IsMatch(s2);
    if (result)
    {
    MessageBox.Show("Found!");
    }
    else
    {
    MessageBox.Show("Not Found!");
    }

  4. #4

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

    من با آرایه ها این رو امتحان کردم نشد ...
    آرایه ام از جنس string بود آیا باید از جنس var باشه ؟؟؟


    for (int i = 0; i <= 18; i++)
    {
    var s1 = stringArrey;
    var regex = new System.Text.RegularExpressions.Regex("\\b" + s1 + "\\b");
    var s2 = text;
    var result = regex.IsMatch(s2);
    if (result)
    {
    Return = s1+ " " + "فعل است";
    }
    else
    {
    Return = s1 + " " + "فعل نیست";
    }

    }
    آخرین ویرایش به وسیله jebreily : سه شنبه 28 آبان 1398 در 19:46 عصر

  5. #5

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

    نقل قول نوشته شده توسط jebreily مشاهده تاپیک
    من با آرایه ها این رو امتحان کردم نشد ...
    آرایه ام از جنس string بود آیا باید از جنس var باشه ؟؟؟


    for (int i = 0; i <= 18; i++)
    {
    var s1 = stringArrey;
    var regex = new System.Text.RegularExpressions.Regex("\\b" + s1 + "\\b");
    var s2 = text;
    var result = regex.IsMatch(s2);
    if (result)
    {
    Return = s1+ " " + "فعل است";
    }
    else
    {
    Return = s1 + " " + "فعل نیست";
    }

    }
    var نوع داده خاصی نیست، صرفا کد نویسی رو ساده تر می کنه. var از روی مقداری که بهش میدید خودش نوع داده مناسب رو تشخیص میده.
    فرضا اگر یک مقدار "hello" بهش بدید var از نوع string میشه. اگر بهش مقدار 123 رو بدید، از نوع int میشه.
    می توانید هر جا var هست حذفش کنید و بجاش نوع داده مناسب رو قرار بدید.

    اگر با آرایه کار می کنید لابد اون for رو دارید برای اعضاء اون آرایه بکار می برید :

    string[] stringArray = new string[] { "من", "رفتن", "و", "شخص", "خواستن", "سبز" };
    var s2 = "آمدن دویدن رفتن ماندن گشتن خواستن خزیدن";
    var output = new StringBuilder();
    string Return;
    foreach (var s1 in stringArray)
    {
    var regex = new System.Text.RegularExpressions.Regex("\\b" + s1 + "\\b");
    var result = regex.IsMatch(s2);
    if (result)
    {
    Return = s1 + " " + "فعل است";
    }
    else
    {
    Return = s1 + " " + "فعل نیست";
    }
    output.AppendLine(Return);
    }
    MessageBox.Show(output.ToString());

تاپیک های مشابه

  1. پاسخ: 3
    آخرین پست: پنج شنبه 26 آذر 1394, 11:20 صبح
  2. سوال: نحوه استفاده از دو دیتا بیس در سی شارپ با استفاده از LINQ
    نوشته شده توسط Behnam6670 در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 1
    آخرین پست: چهارشنبه 23 اسفند 1391, 00:22 صبح
  3. پاسخ: 4
    آخرین پست: دوشنبه 22 شهریور 1389, 10:22 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •