PDA

View Full Version : سوال: وارد کردن اعداد از فایل متنی



t.zeirani
شنبه 21 دی 1392, 01:14 صبح
خسته نباشید،دوستان،آیا کسی میتونه راهنماییم کنه چطور میتونم یک سری اعداد دابل(double) را از یک فایل متنی بخونم و بعد وارد یک آرایه کنم؟

rahnema1
شنبه 21 دی 1392, 08:21 صبح
سلام ، فرمت فایل به چه صورته؟ لطفا فایل مورد نظر را بذارید

t.zeirani
شنبه 21 دی 1392, 14:27 عصر
سلام ، فرمت فایل به چه صورته؟ لطفا فایل مورد نظر را بذارید فایل مورد نظر یه فایل متنی ساده هستش(txt)،فرقی نمی کنه چطوری عدد جدا شده باشه،یا تو هر خط یه عدد بگیره یا با یه ویرگول جدا شده باشه.فقط این که n تا عدد بگیره و دیگه ادامه نده

sagggad
شنبه 21 دی 1392, 14:33 عصر
یعنی چی؟؟
یعنی میخوای فقط اعداد وارد برنامه بشن از طریق فایل متنی؟

rahnema1
شنبه 21 دی 1392, 17:32 عصر
این جوری میشه تمام اعداد را وارد یک ارایه دابل کرد هر تعدادی می خواهید خودتون جدا کنید



using System.IO;
using System.Text.RegularExpressions;
using System.Linq;

string mystring=System.IO.File.ReadAllText("myfile.txt");
string pat = @"(\-?(\d+)?\.?(\d+)?)";
double[] numbers=Regex.Matches(mystring,pat).Cast<Match>()
.Where(zz=>zz.Length>0 zz.Value !="." && zz.Value !="-." &&z z.Value !="-")
.Select(zz=>Double.Parse(zz.Value) ).ToArray();

t.zeirani
شنبه 21 دی 1392, 20:14 عصر
مثلا اعداد این فایل رو وارد آرایه کنم از رو متن http://s5.picofile.com/file/8108442000/New_WinRAR_ZIP_archive.zip.html

sagggad
شنبه 21 دی 1392, 20:16 عصر
فکر کنم بهتره ابتدا اون فایل رو وارد ریچ تکس باکس کنی بعد به طور آزادانه میتونی روش این جورکارها رو انجام بدی...

t.zeirani
شنبه 21 دی 1392, 20:34 عصر
این کارو من برا اعداد int با طول مشخص و ثابت برا همه اعداد تو ریچ تکست باکس انجام دادم ولی نمیدونم برا اعداد دابل با طول مختلف باید چیکار کنم
فکر کنم بهتره ابتدا اون فایل رو وارد ریچ تکس باکس کنی بعد به طور آزادانه میتونی روش این جورکارها رو انجام بدی...

t.zeirani
شنبه 21 دی 1392, 20:36 عصر
این جوری میشه تمام اعداد را وارد یک ارایه دابل کرد هر تعدادی می خواهید خودتون جدا کنید



using System.IO;
using System.Text.RegularExpressions;
using System.Linq;

string mystring=System.IO.File.ReadAllText("myfile.txt");
string pat = @"(\-?(\d+)?\.?(\d+)?)";
double[] numbers=Regex.Matches(mystring,pat).Cast<Match>()
.Where(zz=>zz.Length>0 zz.Value !="." && zz.Value !="-." &&z z.Value !="-")
.Select(zz=>Double.Parse(zz.Value) ).ToArray();


عزیز یه کم درباره عملکرد این کد توضیح میدی؟

rahnema1
شنبه 21 دی 1392, 21:46 عصر
یه اشکال داشت بر طرف کردم
ببینید از شما پرسیدم فایل شما چه طوریه گفتید هر عددی هست را به هر نحوی بکشه بیرون حالا جوری برنامه رو نوشتم تا هر عددی را بکشه بیرون حتی اگه بین حروف باشه اگه همون ابتدا می گفتید ساختار فایل ساده تره کار ما رو راحت تر می کردید حالا نمی دونم کجاش رو توضیح بدم فقط این رو بگم که ابتدا با استفاده از Regex اعداد به همراه یه سری کاراکتر اضافه مثل منها و نقطه را می کشه بیرون سپس با استفاده از linq query آن رشته هایی که بصورت زاید انتخاب شده فیلتر کرده و سپس رشته را به دابل تبدیل می کنیم یه نمونه برنامه آماده هم گذاشتم که متن را از تکست باکس میخونه و اعداد را می کشه بیرون حتی اگه بین حروف باشه حالا اگه برنامه اشکالی داشت بگین اصلاح کنیم


string mystring=System.IO.File.ReadAllText("myfile.txt");
string pat = @"(\-?(\d+)?\.?(\d+)?)";
double[] numbers=Regex.Matches(mystring,pat).Cast<Match>()
.Where(zz=>zz.Length>0 && zz.Value !="." && zz.Value !="-." &&zz.Value !="-")
.Select(zz=>Double.Parse(zz.Value) ).ToArray();

t.zeirani
شنبه 21 دی 1392, 22:24 عصر
مرسی دوست خوبم،آره استفاده کردم مشکلی نداشت،ممنون
یه اشکال داشت بر طرف کردم
ببینید از شما پرسیدم فایل شما چه طوریه گفتید هر عددی هست را به هر نحوی بکشه بیرون حالا جوری برنامه رو نوشتم تا هر عددی را بکشه بیرون حتی اگه بین حروف باشه اگه همون ابتدا می گفتید ساختار فایل ساده تره کار ما رو راحت تر می کردید حالا نمی دونم کجاش رو توضیح بدم فقط این رو بگم که ابتدا با استفاده از Regex اعداد به همراه یه سری کاراکتر اضافه مثل منها و نقطه را می کشه بیرون سپس با استفاده از linq query آن رشته هایی که بصورت زاید انتخاب شده فیلتر کرده و سپس رشته را به دابل تبدیل می کنیم یه نمونه برنامه آماده هم گذاشتم که متن را از تکست باکس میخونه و اعداد را می کشه بیرون حتی اگه بین حروف باشه حالا اگه برنامه اشکالی داشت بگین اصلاح کنیم


string mystring=System.IO.File.ReadAllText("myfile.txt");
string pat = @"(\-?(\d+)?\.?(\d+)?)";
double[] numbers=Regex.Matches(mystring,pat).Cast<Match>()
.Where(zz=>zz.Length>0 && zz.Value !="." && zz.Value !="-." &&zz.Value !="-")
.Select(zz=>Double.Parse(zz.Value) ).ToArray();