عندي ملف نصي اسمه CORAN.txt وفيه القرآن الكريم كاملا مكتوبا بالتمحيص و التشكيل
و عندي 3 تكستبوكس
الأول هو لكتابة الكلمة التي أبحث عنها في هذا الملف النصي (مثلا كلمة الجمعة)
الثاني لعرض هذه الكلمة + الكلمة التي قبلها مباشرة مثلا (سورة الجمعة أو يَوْمِ الْجُمُعَةِ)
و اريد كل جملة في سطر منفصل
والثالث هو معرفة عدد الكلمة التي تبحث عنها في الملف النصي ( عدد كلمة الجمعة مثلا)
ارجو من اخوتي الكرماء التكرم علي بهذا الحل
(11-08-24, 01:26 AM)Amir_Alzubidy كتب : [ -> ]حل رقم (1)
PHP كود :
Imports System.IO
Public Class Form1
' افترض أن لديك 3 TextBox: txtSearch, txtResults, txtCount
' و Button واحد لتنفيذ البحث
Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
Dim searchTerm As String = txtSearch.Text.Trim()
Dim filePath As String = "C:\path\to\CORAN.txt" ' قم بتحديث المسار إلى المسار الصحيح للملف
If String.IsNullOrEmpty(searchTerm) Then
MessageBox.Show("يرجى إدخال كلمة البحث.")
Return
End If
If Not File.Exists(filePath) Then
MessageBox.Show("الملف النصي غير موجود.")
Return
End If
Dim content As String = File.ReadAllText(filePath)
Dim lines() As String = content.Split(New String() {Environment.NewLine}, StringSplitOptions.None)
Dim results As New Text.StringBuilder()
Dim count As Integer = 0
For Each line As String In lines
Dim index As Integer = 0
While (index = line.IndexOf(searchTerm, index, StringComparison.OrdinalIgnoreCase)) >= 0
count += 1
' العثور على الكلمة السابقة
Dim startIndex As Integer = Math.Max(0, index - 50)
Dim previousText As String = line.Substring(startIndex, index - startIndex).Trim()
Dim previousWord As String = previousText.Split(" "c).LastOrDefault()
' إضافة النتيجة إلى نتائج البحث
results.AppendLine($"{previousWord} {searchTerm}")
' متابعة البحث في نفس السطر
index += searchTerm.Length
End While
Next
txtResults.Text = results.ToString()
txtCount.Text = count.ToString()
End Sub
End Class
حل اخر باستخدام الريجكس
PHP كود :
Imports System.IO
Imports System.Text.RegularExpressions
Public Class Form1
' افترض أن لديك 3 TextBox: txtSearch, txtResults, txtCount
' و Button واحد لتنفيذ البحث
Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
Dim searchTerm As String = txtSearch.Text.Trim()
Dim filePath As String = "C:\path\to\CORAN.txt" ' قم بتحديث المسار إلى المسار الصحيح للملف
If String.IsNullOrEmpty(searchTerm) Then
MessageBox.Show("يرجى إدخال كلمة البحث.")
Return
End If
If Not File.Exists(filePath) Then
MessageBox.Show("الملف النصي غير موجود.")
Return
End If
Dim content As String = File.ReadAllText(filePath)
Dim regexPattern As String = String.Format("\b(\w+)?\b\s+{0}\b", Regex.Escape(searchTerm))
Dim regex As New Regex(regexPattern, RegexOptions.IgnoreCase)
Dim matches As MatchCollection = regex.Matches(content)
Dim results As New Text.StringBuilder()
Dim count As Integer = matches.Count
For Each match As Match In matches
If match.Success Then
Dim previousWord As String = If(String.IsNullOrEmpty(match.Groups(1).Value), "", match.Groups(1).Value)
results.AppendLine($"{previousWord} {searchTerm}")
End If
Next
txtResults.Text = results.ToString()
txtCount.Text = count.ToString()
End Sub
End Class
شكرا أخي الكريم
و لكن من دون نتيجة
مثلا إذا كتبت كلمة المؤمنون في مربع البحث ستأتيك النتيجة هكذا :
سورة المؤمنون
فقط بدلا من يأتيك بكلمات المؤمنون الأخرى في القرآن الكريم
ثانيا عدد الكلمات = 1
(11-08-24, 12:38 PM)Amir_Alzubidy كتب : [ -> ]المعذرة اخي الحبيب ربما هناك مشكلة بعدم فهم السؤال ،
اليك التعديل مجدداً و اتمنى ان يكون حلاً موفقاً .
ان لم يكن كذلك فلا بأس ، يمكنك ارفاق الملف النصي في ردك القادم للتجربة
تحياتي لك
PHP كود :
Imports System.IO
Imports System.Text.RegularExpressions
Public Class Form1
' افترض أن لديك 3 TextBox: txtSearch, txtResults, txtCount
' و Button واحد لتنفيذ البحث
Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
Dim searchTerm As String = txtSearch.Text.Trim()
Dim filePath As String = "C:\path\to\CORAN.txt" ' قم بتحديث المسار إلى المسار الصحيح للملف
If String.IsNullOrEmpty(searchTerm) Then
MessageBox.Show("يرجى إدخال كلمة البحث.")
Return
End If
If Not File.Exists(filePath) Then
MessageBox.Show("الملف النصي غير موجود.")
Return
End If
Dim content As String = File.ReadAllText(filePath)
Dim regexPattern As String = String.Format("(\b\w+\b)?\s+\b{0}\b", Regex.Escape(searchTerm))
Dim regex As New Regex(regexPattern, RegexOptions.IgnoreCase Or RegexOptions.Multiline)
Dim matches As MatchCollection = regex.Matches(content)
Dim results As New Text.StringBuilder()
Dim count As Integer = matches.Count
For Each match As Match In matches
If match.Success Then
Dim previousWord As String = If(String.IsNullOrEmpty(match.Groups(1).Value), "", match.Groups(1).Value)
results.AppendLine($"{previousWord} {searchTerm}")
End If
Next
txtResults.Text = results.ToString()
txtCount.Text = count.ToString()
End Sub
End Class
المعذرة أخي الكريم
نفس النتيجة
الكود بعد تحويله إلى C#
private void btnSearch_Click(object sender, EventArgs e)
{
string searchTerm = txtSearch.Text.Trim();
string filePath = @"CORAN.txt"; // Update the path to the correct file path
if (string.IsNullOrEmpty(searchTerm))
{
MessageBox.Show("Please enter a search term.");
return;
}
if (!File.Exists(filePath))
{
MessageBox.Show("The text file does not exist.");
return;
}
string content = File.ReadAllText(filePath);
string regexPattern = $@"(\b\w+\b)?\s+\b{Regex.Escape(searchTerm)}\b";
Regex regex = new Regex(regexPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);
MatchCollection matches = regex.Matches(content);
StringBuilder results = new StringBuilder();
int count = matches.Count;
foreach (Match match in matches)
{
if (match.Success)
{
string previousWord = string.IsNullOrEmpty(match.Groups[1].Value) ? "" : match.Groups[1].Value;
results.AppendLine($"{previousWord} {searchTerm}");
}
}
txtResults.Text = results.ToString();
txtCount.Text = count.ToString();
}
فقط يعطيك مثلا سورة المؤمنون... و لا يعطيك بقية الآيات التي توجد فيها كلمة المؤمنون
الطلب مرة أخرى للتوضيح:
لدي ملف نصي يسمى QURAN.txt، والذي يحتوي على القرآن الكريم كاملاً، مكتوباً بعلامات التشكيل. اريد دالة بلغة سي شارب تبحث في هذا الملف النصي ولدي 3 مربعات نصية الأول هو لكتابة الكلمة التي أبحث عنها في هذا الملف النصي (كلمة الجمعة مثلاً).
والثاني هو لعرض هذه الكلمة + الكلمة التي قبلها مباشرة، مثلاً (سورة الجمعة أو يوم الجمعة). أريد أن تكون كل جملة في سطر منفصل
والثالث هو لمعرفة عدد الكلمة التي تبحث عنها في الملف النصي (عدد كلمة الجمعة مثلا.
(12-08-24, 01:37 AM)Amir_Alzubidy كتب : [ -> ]اخي الحبيب جزاك الله خير
بارك الله سعيك في خدمة القرآن الكريم
كما لدي رغبة شديدة بأن اكون جزءً من نجاح هذا العمل لو بالقليل
هذه محاولة اتمنى ان تؤدي الغرض
كما اتمنى من الاخوة ممن لديه الخبرة او الطريقة المشاركة لحل هذه المشكلة لنتشارك الاجر
PHP كود :
private void btnSearch_Click(object sender, EventArgs e)
{
string searchTerm = txtSearch.Text.Trim();
string filePath = @"QURAN.txt"; // تأكد من تحديث المسار إلى المسار الصحيح للملف
if (string.IsNullOrEmpty(searchTerm))
{
MessageBox.Show("يرجى إدخال كلمة البحث.");
return;
}
if (!File.Exists(filePath))
{
MessageBox.Show("الملف النصي غير موجود.");
return;
}
string content = File.ReadAllText(filePath);
string regexPattern = $@"(\b\w+\b)?\s+\b{Regex.Escape(searchTerm)}\b";
Regex regex = new Regex(regexPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);
MatchCollection matches = regex.Matches(content);
StringBuilder results = new StringBuilder();
int count = matches.Count;
foreach (Match match in matches)
{
if (match.Success)
{
string previousWord = string.IsNullOrEmpty(match.Groups[1].Value) ? "" : match.Groups[1].Value;
results.AppendLine($"{previousWord} {searchTerm}");
}
}
txtResults.Text = results.ToString();
txtCount.Text = count.ToString();
}
نصرك الله و اعزك و رزقنا و اياك الصحة و العافية
هذا الكود لا يعمل
(13-08-24, 09:52 PM)Taha Okla كتب : [ -> ]إن كنت تبحث عن هدف برمجي،
فقد كفوك الشباب بما قدموه من حلول، وعليك تكييفها لتناسب ما تريد.
ولحلول أكثر فعالية أبحث في جوجل وفي يوتيوب عن Regex وتعلم عنها
فيها أكثر مما يطلب المبرمج العادي بكثير.
أما إن كنت تريد صناعة برنامج ليساعدك في بحوث عن القرآن
فهذا رابط لبرنامج ما ترك شيء إلا ووضع فيه من إحصاء وبحث وترقيم وتجميع ..
برنامج إحصاء القرآن - تحميل من موقع الكحيل
ليست هذه المرة الأولى التي ترد بها على أحد الأخوة بهذا الأسلوب الجاف المحبط ..
نحن هنا لنتعلم ..
نحن نبحث عن شيء نتعلمه
لسنا هنا للبحث عن ما ينتجه الآخرون لنستهلكه بغباء ..
عندما طرحت سؤالي هذا لم أكن أتوقع منك أن تغلق باب التعلم بهذه العنجهية و الإنفعالية !!!
الحقيقة أن بعضنا مازال بحاجة أن يتعلم كيف يخاطب الآخرين دون أن يقتل فيهم أمل البحث و العلم
(15-08-24, 01:33 AM)kebboud كتب : [ -> ]ليست هذه المرة الأولى التي ترد بها على أحد الأخوة بهذا الأسلوب الجاف المحبط ..
نحن هنا لنتعلم ..
نحن نبحث عن شيء نتعلمه
لسنا هنا للبحث عن ما ينتجه الآخرون لنستهلكه بغباء ..
عندما طرحت سؤالي هذا لم أكن أتوقع منك أن تغلق باب التعلم بهذه العنجهية و الإنفعالية !!!
الحقيقة أن بعضنا مازال بحاجة أن يتعلم كيف يخاطب الآخرين دون أن يقتل فيهم أمل البحث و العلم
الموضوع الذي وضعه لك الأخ المبدع (
Zuhare) موضوع الأخ
السندبااد فيها أكثر مما طلبت بكثير
مواضيع السندباد في برامج عرض النصوص كالقرآن الكريم وغيره سبقت غيرها من البرامج العربية
كبرامج مفتوحة المصدر ..
أما عن موضوع البحث العلمي في القرآن(هذا البرنامج لعشاق القرآن -- وليس للأغبياء) ..
كما ذكرت لك عن برنامج احصاء القرآن الكريم .. من موقع الكحيل..
فهو أضخم برنامج حتى الآن في هذا المجال ..
وبالنسبة عن الطرق التي ذكرها هنا الأخ (
Amir_Alzubidy ) والتي تعد موضوع كبير جداً ..
ولا يمكن فهمه من خلال نسخ الكود ولصقه ولا حتى مبرمج محترف يمكنه أن يفهمها دون الرجوع للمصادر ..
وتحتاج أن تفهم الموضوع من أساسه من خلال مشاهدة فيديوهات أو تقرأ عن الـ (Regex) وتفهم على أي أساس تعمل الـ (
Regex).
ولا يوجد في هذا المنتدى حتى الآن من شرحه بما يستفيد منه طلاب العلم بشكل علمي وعملي بنفس الوقت
(يوجد مواضيع عنه هنا ولكنها لم تذكر كل جوانبه التي يحتاجها من يتعاملك كثيرا مع النصوص)
ولذلك طلبت منك البحث للتعلم عن هذا الموضوع الكبير في مفعوله البسيط في أكواده..
ولم أغلق الباب في وجهك كما تدعي.
ولكن سوء نيتك التي تظهر في ردودك .. تجعلك تتسرع بالرد والتفوه بالكثير من الحماقات ..
كما ظهرت هنا جلياً في هذا الموضوع ..
وإن كنت صادقاً وأنك من هواة التعلم : أنتج برنامج فيه ربع ميزات برنامج إحصاء القرآن الكريم الذي ذكرته لك ..
وأعلم أنك لن تفعل لأنك من هواة الكلام وتضييع الوقت ..ولست من أهل العمل الجاد..