PDA

View Full Version : سوال: لطفا راهنمایی کنید**در رابطه با جستجوی فایل



mohammad87
جمعه 25 دی 1388, 23:28 عصر
با سلام به همه *مخصوصا حرفه ای ها !!!1
یک سوال داشتم :
من یه فایل متنی دارم (پسوند txt) ، یک سری نوشته مثل زیر داخلش نوشته شده :
A123,345,567
B546,352,674
C145,256,587
حالا سوال من اینه ، چطور می تونم از این فایل وقتی A خوندم 3 تا عدد بعدی اون رو که مربوط بهش هست بخونم و توی یک متغیر بزارم (یعنی 123 توی یک متغیر و 345 توی یکی دیگه و 567 توی یک متغیر دیگه).

ممنون از اینکه راهنمایی می کنید ...

mojehfilm
شنبه 26 دی 1388, 19:42 عصر
یکم مشکله ...
لطفا اون کدی رو که برای جستجوی حرف A نوشتی بزار .

Saeed.Masoumi
شنبه 26 دی 1388, 23:13 عصر
سلام فایلو آپ کن تا روش بهینشو بهت بگم اما اگه این روش جوابتو میده روش کار کن بهترش کن:



string[] lines;
string[] temp = new string[3];
int[] Anumbers = new int[3];
int[] Bnumbers = new int[3];
int[] Cnumbers = new int[3];
lines = new string[System.IO.File.ReadAllLines(@"c:\ff.txt").Length];
lines = System.IO.File.ReadAllLines(@"c:\ff.txt");
for (int i = 0; i < lines.Length; i++)
{
temp = lines[i].Split(',');
switch (temp[0].Substring(0, 1).ToLower())
{
case "a":
temp[0] = temp[0].Remove(0, 1);
Anumbers[0] = int.Parse(temp[0]);
Anumbers[1] = int.Parse(temp[1]);
Anumbers[2] = int.Parse(temp[2]);
break;
case "b":
temp[0] = temp[0].Remove(0, 1);
Bnumbers[0] = int.Parse(temp[0]);
Bnumbers[1] = int.Parse(temp[1]);
Bnumbers[2] = int.Parse(temp[2]);
break;
case "c":
temp[0] = temp[0].Remove(0, 1);
Cnumbers[0] = int.Parse(temp[0]);
Cnumbers[1] = int.Parse(temp[1]);
Cnumbers[2] = int.Parse(temp[2]);
break;

}
}
MessageBox.Show("A[0] is :" + Anumbers[0].ToString() + " A[1] is :" + Anumbers[1].ToString() + " A[2] is :" + Anumbers[2].ToString());
MessageBox.Show("B[0] is :" + Bnumbers[0].ToString() + " B[1] is :" + Bnumbers[1].ToString() + " B[2] is :" + Bnumbers[2].ToString());
MessageBox.Show("C[0] is :" + Cnumbers[0].ToString() + " C[1] is :" + Cnumbers[1].ToString() + " C[2] is :" + Cnumbers[2].ToString());

hamidreza20
شنبه 26 دی 1388, 23:15 عصر
سلام دوست عزیز

برای اینکار ابتدا فایل متنی را خوانده آن را به داخل یک کنترل richtextbox لود می کنی و سپس شروع می کنی خط به خط اون رو خوندن و هر جا به کاما رسیدی اون رو مثلا داخل یک رشته گذاشته و ... ادامه می دی.

تست کن اگه جواب نگرفتی بگو بنوسیم برات بزارم.

التماس دعا...

mir555
یک شنبه 27 دی 1388, 08:18 صبح
راحت ترین کاری که می تونی انجام بدی



string str=system.io.file.readalltext("Filename");
string[] tmp=str.split(',');



بعد از نوشتن این کد "تو سی شارپ ننوشتم پس موقع نوشتن حروف بزرگ و کوچک رعایت کن" تو متغییر tmp که یک آرایه هست از هر ، تا ، بعدی تو هر سطر قرار می گیره اگه طول یک خانه از آریه 4 بود یعنی حروف اولش قرار داره و اگه نداشت یعنی فقط عدد جلوشه
بازم اگه مشکل داشتی تو پیاده سازی نمونه فایل متنی بزار برات بنویسم

mohammad87
یک شنبه 27 دی 1388, 11:11 صبح
ممنون که بچه ها جواب دادید hamidreza20 و mir555 اگه کد رو هم می گذاشتید بهتر بود.

در ضمن سعید خان از کد شما استفاده کردم ... کارم راه افتاد. این قسمت از کد رو متوجه نشدم:
temp[0].Substring(0, 1).ToLower()
و اینجا:
temp[0] = temp[0].Remove(0, 1);
در ضمن این دوتا باهم چه فرقی دارن ؟

lines = new string[System.IO.File.ReadAllLines(@"c:\ff.txt").Length];
lines = System.IO.File.ReadAllLines(@"c:\ff.txt");


ممنون میشم راهنمایی کنید.

Saeed.Masoumi
یک شنبه 27 دی 1388, 17:57 عصر
سلام
اون کد به هیچ وجه بهینه نیست گفته باشم!!!!!!(باید خیلی مرتبش کنی)
ببین درمورد سوال اول:
برای اینکه کاراکتر اول هر خط رو بخونم بعد با a مثلا مقایسش کنم و از اونجا که من فرمت فایلتون رو ندیده بودم گفتم بهتر که کاراکتر اول فرم رو به یک کاراکتر کوچک تبدیل کنم بعد با a مقایسش کنم میشد به ToUpper() تبدیلش کنم بعد با A مقایسش کنم
سوال دوم:
مجبور بودم همون کاراکتر اول رو از داخل خط حذف کنم تا در هنگام خط به Integer دچار مشکل نشم چون a رو نمیشه به int کست کنم.
سول سوم:
در خط اول میام نمونه ای که از آرایه رشته ای رو ساختم را کامل تعریف می کنم و سایز آنرا برابر تعداد خطوط فایل در نظر می گیریم
در خط دوم من اومدم و خطوط فایل رو در آرایه که ساختم(Lines) می ریزم.
امیدوارم کافی توضیح داده باشم