[ad_1]
مرحبًا
قرأت ملفًا نصيًا يحتوي على العديد من الكلمات ويتم حفظ محتوى الملف في s0
وأريد أن أجد عدد الكلمات التي تحتوي عليها
إستعملت
MyWord = s0.Split(new char[] { ‘ ‘ }, StringSplitOptions.RemoveEmptyEntries);
MyWord عبارة عن مجموعة من السلاسل
يساعد
ما حاولت:
StreamReader sr; string[] MyWord = new string[4096]; private void FormLoad(object sender, EventArgs e) { int i, j, count=0; for (i = 0; i < 4096; i++) MyWord[i] = "";// string.Empty; string s0 = sr.ReadToEnd(); MyWord = s0.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); sr = new StreamReader(fsr, System.Text.Encoding.Default); count = 0; for (i = 0; i < 4096; i++) { if (MyWord[i] != "")//'type of error =Index was outside the bounds of the array.' { MessageBox.Show("MyWord["+i.ToString()+"]= "+MyWord[i],"count="+count.ToString()); count++; } else break; } MessageBox.Show(count.ToString() , "count"); }
الحل 1
إليك طريقة واحدة للقيام بذلك:
ج #
using System.Text.RegularExpressions; string text = "The quick brown, and lazy, fox jumped over the tall-green fence!\r\n What a sight it was. "; int WordCount = Regex.Matches(text, @"\b[A-Za-z0-9]+\b").Count; int ParagraphCount = Regex.Matches(text, @"[^\r\n]*[^ \r\n]+[^\r\n]*((\r|\n|\r\n)[^\r\n]*[^ \r\n]+[^\r\n]*)*").Count + 1; Console.WriteLine(text); Console.WriteLine($"contains {WordCount} words and {ParagraphCount} paragraphs.");
النواتج:
The quick brown, and lazy, fox jumped over the tall-green fence! What a sight it was. contains 17 words and 2 paragraphs.
الحل 2
سيكون التعبير العادي أبسط
التعبير العادي
\w+
والتي من شأنها أن تعطيك
The quick brown and lazy fox jumped over the tall green fence What a sight it was
حساب التطابقات سيعطيك عدد الكلمات.
[ad_2]
コメント