PDA

View Full Version : جستجو در فایل txt



proreza2
جمعه 26 آذر 1389, 15:31 عصر
سلام
من میخواهم برنامه ای نویسم که یک فایل تکست از ما بگیره که چاپ کند که در فایل تکست یک کلمه چند بار تکرار شده است اسم کلمه را همرا با تعدا تکرار کلمه چاپ کند
ممنون دوستان

alirat
جمعه 26 آذر 1389, 15:41 عصر
خوب سوالت کو؟

proreza2
جمعه 26 آذر 1389, 15:54 عصر
من میخواهم برنامه ای بنویسم که یک فایل تکست از ما بگیره که چاپ کند که در فایل تکست یک کلمه چند بار تکرار شده است اسم کلمه را همراه با تعدا تکرار کلمه چاپ کند یعنی چیزی شبییه جستجو در فایل تکست انجام میده ممنون میشم اگه راهنمایی کنید

Rejnev
جمعه 26 آذر 1389, 15:57 عصر
string f = File.ReadAllText("c:\\a.txt");
string[] words = f.Split(new char[] { ' ', '\r', '\n' });
foreach (string item in words)
{
Console.WriteLine(item + ":{0}", words.Where(a => a.Equals(item)).Count());
}

این قطعه کد تمامی کلمات فایل رو در سمت چپ و تعداد شون رو در سمت راست کلمه مینویسه. (از توابع لینک استفاده شده) تست کن ببین جواب میده بهت

proreza2
جمعه 26 آذر 1389, 17:28 عصر
ممنون دوست عزیز
ولی من میخواهم که اول آدرس فایل تکست را بگیره وبعد عملیان را انجام بده
البته اگر محیط اش کنسول نباشه بهتره ممنون دوست عزیز

Rejnev
جمعه 26 آذر 1389, 17:52 عصر
string f = File.ReadAllText(textbox1.Text);
string[] words = f.Split(new char[] { ' ', '\r', '\n' });
foreach (string item in words)
{
textbox2.AppendText(string.Format(item+":{0}", words.Where(a => a.Equals(item)).Count()));
}

من اینا رو ذهنی مینویسم. اگه جایی اشتباه بود خودت درست کن
دو تا تکست باکس روی فرم بنداز و خاصیت multiline دومی رو true کن و ارتفاعش رو زیاد کن.

proreza2
جمعه 26 آذر 1389, 18:08 عصر
ممنون دوست عزیز
ولی نمیدونم چرا(string f = File.ReadAllText(textbox1.Text
در دستور فایل ارور میده

Rejnev
جمعه 26 آذر 1389, 18:29 عصر
using System.Linq;
using System.IO

proreza2
یک شنبه 28 آذر 1389, 17:24 عصر
ممنون دوست عزیز
ولی چه جوری میشه یک قسمت هم اضافه کرد که اسم کلمه را بدیم تعدا تکراش را بنویسه؟:متفکر:

Rejnev
یک شنبه 28 آذر 1389, 18:04 عصر
void btn_Click(...)
{
string f = File.ReadAllText(textbox1.Text);
string[] words = f.Split(new char[] { ' ', '\r', '\n' });
textbox2.Text=words.where(a=>a.equals(textBox3.Text)).Count().ToString();
}

textbox3 کلمه مورد نظر رو در خودش داره

vahid64
یک شنبه 28 آذر 1389, 23:30 عصر
این برای شمارش درست.اما اگه بخوایم خود کلمه رو برگردونه چی ؟
یا مثلاً قسمتی از کلمه رو در textbox3 وارد کنیم و کلمه کامل رو برگردونه به ما؟
ممنون

proreza2
دوشنبه 29 آذر 1389, 00:01 صبح
void btn_Click(...)
{
string f = File.ReadAllText(textbox1.Text);
string[] words = f.Split(new char[] { ' ', '\r', '\n' });
textbox2.Text=words.where(a=>a.equals(textBox3.Text)).Count().ToString();
}
textbox3 کلمه مورد نظر رو در خودش داره
به دستور
quals ارور میده
کد اصلا اجرا نمیشه!!

Rejnev
دوشنبه 29 آذر 1389, 12:48 عصر
این برای شمارش درست.اما اگه بخوایم خود کلمه رو برگردونه چی ؟
یا مثلاً قسمتی از کلمه رو در textbox3 وارد کنیم و کلمه کامل رو برگردونه به ما؟
ممنون
فرض کن یک لیبل داری و یک تکست که در اون بخشی از یک کلمه قرار داره. میخوای وقتی سرچ رو زدی اون بخش جزئی از کلکه در کل فایل جستجو بشه و خود کلمه رو توی لیبل نمایش بدی:


string f=File.ReadAllText("c:\\a.txt");
string[] words =f.Split(new char[]{' ','\r','\n'});
lblResult.Text=words.Where(a=>a.Contain(txtKey.Text)).SingleOrDifault();



به دستور
quals ارور میده
کد اصلا اجرا نمیشه!!
Equals درسته. این جور سوالا رو در اصل من نباید جواب بدم.اگه روی کلمه کلید های کنترل و اسپیس رو فشار بدین کلمه رو تصحیح میکنه.

proreza2
پنج شنبه 02 دی 1389, 12:21 عصر
ببخشید دوست عزیز اشکال از تایپ من بود

string f = File.ReadAllText(textbox1.Text);
string[] words = f.Split(new char[] { ' ', '\r', '\n' });
textbox2.Text=words.where(a=>a.equals(textBox3.Text)).Count().ToString();


کد را کاملا صحیح وارد کردم ولی کار نمیکند

Rejnev
پنج شنبه 02 دی 1389, 14:35 عصر
منظورتون از اینکه کار نمیکنه چیه؟
پیغام خطا میده یا صفر برمیگردونه
اگه صفر برمیگردونه که یعنی مقدار مشابهی رو نتونسته پیدا کنه (ali با Ali مشابه نیست) میتونید اول رشته کلید رو تبدیل به حروف کوچک کنید یا از تابع Contains به جای Equals استفاده کنید.
اگر هم خطا میده متن خطا و یا عکسی از کد رو که خطا روش ایستاده رو بفرستید

hadi-z
پنج شنبه 02 دی 1389, 17:48 عصر
من میخواهم برنامه ای بنویسم که یک فایل تکست از ما بگیره که چاپ کند که در فایل تکست یک کلمه چند بار تکرار شده است اسم کلمه را همراه با تعدا تکرار کلمه چاپ کند یعنی چیزی شبییه جستجو در فایل تکست انجام میده ممنون میشم اگه راهنمایی کنید

سلام
فکر کنم اینجا بتونی جواب کامل سوالتو بگیری:

http://www.codeproject.com/Answers/87984/Count-number-of-words-in-text-file.aspx#answer2

proreza2
جمعه 03 دی 1389, 19:30 عصر
منظورتون از اینکه کار نمیکنه چیه؟
پیغام خطا میده یا صفر برمیگردونه
اگه صفر برمیگردونه که یعنی مقدار مشابهی رو نتونسته پیدا کنه (ali با Ali مشابه نیست) میتونید اول رشته کلید رو تبدیل به حروف کوچک کنید یا از تابع Contains به جای Equals استفاده کنید.
اگر هم خطا میده متن خطا و یا عکسی از کد رو که خطا روش ایستاده رو بفرستید
دوست عزیز برای دستور whereارور
system.array
میده

proreza2
جمعه 03 دی 1389, 19:31 عصر
سلام
فکر کنم اینجا بتونی جواب کامل سوالتو بگیری:

http://www.codeproject.com/Answers/87984/Count-number-of-words-in-text-file.aspx#answer2
دوست عزیز این کد را میشه یکم توضیح بدیدمن که سر در نیاورد کجای برنامه بنویسم

hadi-z
جمعه 03 دی 1389, 19:40 عصر
خب این دوتا تابع رو تو کلاست کپی کن
بعد از اولی برای خوندن فایل مورد نظرت استفاده کن و از دومی برای جستجو


public string ReadTextFile(string filename)
{
StreamReader re = File.OpenText(filename);
string result = "";
string input = "";
try
{
while ((input = re.ReadLine()) != null)
{
Thread.Sleep(5000);
for (int i = 0; i < input.Length; i++)
{
result += input[i];
Thread.Sleep(2500);
}
}
}
catch (Exception ex)
{
// do something here.
}
finally
{
if (re != null)
{
Thread.Sleep(2500);
re.close;
}
re = null;
}
}
private int CountWords(string filename, string text)
{
int wordCount = 0;
try
{
for (int i = 0; i < text.Length; i++)
{
if (text[i] == ' ' || text[i] == '\i')
{
Thread.Sleep(500);
wordCount++;
if (wordCount > 1)
{
Thread.Sleep(500);
ReadTextFile(filename);
}
}
}
}
catch (Exception ex)
{
// do something here
}
return wordCount;
}

proreza2
جمعه 03 دی 1389, 19:59 عصر
دوست عزیز اگه میشه شما فایل اجرایی برنامه را بزارید خوب میشه اخه من هر چی وارد میکنم ارور میگیرم(نمیدونم از برنامه ویژال سی شارپ هست یا نه)در کل فایل اجرای برنامه را بزاری ممنون میشم

hadi-z
جمعه 03 دی 1389, 21:10 عصر
اینو با یه روش دیگه نوشتم

امیدوارم به دردت بخوره.