PDA

View Full Version : مبتدی: جدا کردن بخشی از یک سطر



nabi-j
چهارشنبه 23 مرداد 1392, 12:15 عصر
سلام بر اساتید محترم
من یک فایل متنی دارم که محتوای درون اون بصورت زیر است
==========
کتاب = Book
جدول = Table
ماشین = Car
روز = Day
شب = Night
==========
حالا من میخوام عبارات قبل از علامت = را در یک لیست باکس و عبارات یعد از اون رو در یک لیست باکس دیگه نشون بدم ولی نمیدونم چجوری اونها رو جدا کنم.
لطفا راهنمایی کنید. متشکرم

Anjojak
چهارشنبه 23 مرداد 1392, 12:28 عصر
اول با دستور Streamreader فایل متنی رو میخونی , بعد یه حلقه می ذاری شرطش این باشه که به پایان فایل نرسیده باشه اینجوری :
StreamReader sr = new StreamReader(FileName); ;

while(sr.EndOfStream !=false)
داخل حلقه میای خط به خط میخونی اینجوری :
string line = sr.ReadLine();
بعد یه متغیر تعریف میکنی و محل قرار گرفتن = رو پیدا میکنی اینجوری :
int num1 = line.IndexOf("=");
حالا که محل قرار گیری مساوی رو پیدا کردی,با دستور line.Substring() میای بخش قبل از مساوی و بعد از اون رو جدا میکنی و داخل لیست باکس میریزی
دو تا نکته: این نیم اسپیس رو باید بالای پروژه تعریف کنی :
using System.IO;
و اینکه کل این دستورایی که بعد از حلقه وایل گفتم داخل حلقه بنویسی

veniz2008
چهارشنبه 23 مرداد 1392, 12:32 عصر
سلام.
قبلا در سایت بحث شده بود.
قبلش این using System.IO; رو اضافه کنید.

StreamReader sr = new StreamReader("d:\\test.txt");
string allchar = sr.ReadToEnd();
sr.Close();
string[] records = allchar.Split('\n');
for (int i = 0; i < records.Length; i++)
{
string[] field = records[i].Split('=');
listBox1.Items.Add(field[0]);
listBox2.Items.Add(field[1]);
}

nabi-j
چهارشنبه 23 مرداد 1392, 14:01 عصر
اول با دستور Streamreader فایل متنی رو میخونی , بعد یه حلقه می ذاری شرطش این باشه که به پایان فایل نرسیده باشه اینجوری :
StreamReader sr = new StreamReader(FileName); ;

while(sr.EndOfStream !=false)
داخل حلقه میای خط به خط میخونی اینجوری :
string line = sr.ReadLine();
بعد یه متغیر تعریف میکنی و محل قرار گرفتن = رو پیدا میکنی اینجوری :
int num1 = line.IndexOf("=");
حالا که محل قرار گیری مساوی رو پیدا کردی,با دستور line.Substring() میای بخش قبل از مساوی و بعد از اون رو جدا میکنی و داخل لیست باکس میریزی
دو تا نکته: این نیم اسپیس رو باید بالای پروژه تعریف کنی :
using System.IO;
و اینکه کل این دستورایی که بعد از حلقه وایل گفتم داخل حلقه بنویسی
ممنونم از اینکه لطف کردید و جواب دادید
ولی حلقه While اصلا اجرا نمیشه چون از همون اول شرط برقرار نیست و دستورات داخل حلقه اجرا نمیشه.

nabi-j
چهارشنبه 23 مرداد 1392, 14:03 عصر
سلام.
قبلا در سایت بحث شده بود.
قبلش این using System.IO; رو اضافه کنید.

StreamReader sr = new StreamReader("d:\\test.txt");
string allchar = sr.ReadToEnd();
sr.Close();
string[] records = allchar.Split('\n');
for (int i = 0; i < records.Length; i++)
{
string[] field = records[i].Split('=');
listBox1.Items.Add(field[0]);
listBox2.Items.Add(field[1]);
}
خیلی متشکرم
روشتون جواب داد ولی اگه یک سطر خالی داشته باشیم با خطا مواجه میشه

مهرداد صفا
چهارشنبه 23 مرداد 1392, 14:48 عصر
سلام بر اساتید محترم
من یک فایل متنی دارم که محتوای درون اون بصورت زیر است
==========
کتاب = Book
جدول = Table
ماشین = Car
روز = Day
شب = Night
==========
حالا من میخوام عبارات قبل از علامت = را در یک لیست باکس و عبارات یعد از اون رو در یک لیست باکس دیگه نشون بدم ولی نمیدونم چجوری اونها رو جدا کنم.
لطفا راهنمایی کنید. متشکرم

با سلام.

ListBox1.DataSource=System.IO.File.ReadAllLines(fi lename).Select((line)=>line.Split("=").FirstOrDefault()).ToList();
LIstBox2.DataSource=File.ReadAllLines(filename).Se lect(line=>line.Split("=").LastOrDefault()).ToList();

veniz2008
چهارشنبه 23 مرداد 1392, 16:30 عصر
روشتون جواب داد ولی اگه یک سطر خالی داشته باشیم با خطا مواجه میشه
میتونستی راحت با یک if چک کنی که آیا سطر جاری شامل '=' هست یا نه. اگر بود اونوقت split بکنه. میشه خیلی از چیزها رو اعمال کرد تا خروجی مورد نظر پیدا بشه.

StreamReader sr = new StreamReader("d:\\test.txt");
string allchar = sr.ReadToEnd();
sr.Close();
string[] records = allchar.Split('\n');
for (int i = 0; i < records.Length; i++)
{
if (records[i].Contains('='))
{
string[] field = records[i].Split('=');
listBox1.Items.Add(field[0]);
listBox2.Items.Add(field[1]);
}
}
موفق باشید.

nabi-j
چهارشنبه 23 مرداد 1392, 16:41 عصر
میتونستی راحت با یک if چک کنی که آیا سطر جاری شامل '=' هست یا نه. اگر بود اونوقت split بکنه. میشه خیلی از چیزها رو اعمال کرد تا خروجی مورد نظر پیدا بشه.

StreamReader sr = new StreamReader("d:\\test.txt");
string allchar = sr.ReadToEnd();
sr.Close();
string[] records = allchar.Split('\n');
for (int i = 0; i < records.Length; i++)
{
if (records[i].Contains('='))
{
string[] field = records[i].Split('=');
listBox1.Items.Add(field[0]);
listBox2.Items.Add(field[1]);
}
}
موفق باشید.
خیلی خیلی ممنون کارم راه افتاد
از تمامی عزیزان سپاسگزارم