نوشته شده توسط
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!");
}