نوشتن قسمتی از فایل داخل یک فایل جدا - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

نوشتن قسمتی از فایل داخل یک فایل جدا

+1 امتیاز
من یک فایل دارم که اطلاعات داخلش به این شکل ذخیره شدن

1345-230  تهران

1370-800  تبریز یاسوج

1385-20  مشهد اصفهان

می خوام  قسمت اول اطلاعات رو جدا کنیم و داخل یک فایل دیگه بریزم یعنی به این شکل

1345-230

1370-800

1385-20

 

یک سری کد هم توی اینترنت دیدم ولی هیچ کدوم درست کار نمی کنن ممنون میشم کمک کنید :(
سوال شده فروردین 5, 1393  بوسیله ی SaveMe (امتیاز 69)   2 3 3
دوباره تگ گذاری شد فروردین 5, 1393

1 پاسخ

+3 امتیاز
 
بهترین پاسخ

سلام.

ترتیبی رو که برای شهرها و اعداد ذکر کردید بسیار مهم هست. من فرض میکنم دقیقا همین ترتیبی که گفتید در فایلتون رعایت شده یعنی :

1. نام شهرها در سمت چپ قرار داره و حداقل با یک space از اعداد جدا شده.

2. بین اعداد هیچگونه space ای وجود نداره (با یک خط تیره از هم جدا شدن).

3. هر خط از فایل با enter از خط بعدی جدا شده. (من فرض کردم از n\ استفاده شده، ممکنه r\n\ هم استفاده شده باشه).

ابتدا باید تمام خطوط رو با استفاده از کلاس StremReader بخونید و در یک آرایه رشته ای بریزید. یعنی هر خط (شامل نام شهرها و اعداد) درون یک خانه از آرایه.

در مرحله بعد روی هر خانه، از متد LastIndexOf برای پیدا کردن آخرین space استفاده می کنیم. در واقع آخرین space جدا کننده شهر و اعداد هستش.

با بدست آوردن محل آخرین space، با استفاده از متد SubString زیر رشته مربوط به اعداد رو جدا میکنم و درون یک آرایه کمکی به نام SubRecord می ریزم.

در نهایت در خارج از حلقه و زمانیکه همه رکوردهای فایل اصلی رو تجزیه کردیم و درون آرایه کمکی ریختیم، حالا این آرایه کمکی رو با استفاده از کلاس StreamWriter درون یک فایل با نام دلخواه مثلا SecondFile.txt می ریزیم. نیازی نیست این فایل رو از قبل ایجاد کنید. اگر این فایل از قبل ساخته نشده باشه، بصورت خودکار در مسیری که گفتید ساخته خواهد شد.

برای استفاده از streamreader و streamwriter نیازه که using زیر رو به بالای پروژه اضافه کنید :

using System.IO;

کدهای برنامه هم به قرار زیر هست :

StreamReader file = new StreamReader("d:\\Main.txt");
            string AllText = file.ReadToEnd();
            file.Close();
            string[] Record = AllText.Split('\n');
            string[] SubRecord = new string[Record.Length];
            for (int i = 0; i < Record.Length; i++)
            {
                SubRecord[i] = Record[i].Substring(Record[i].LastIndexOf(' ')).Trim();
            }
            using (StreamWriter sw = new StreamWriter("d:\\SecondFile.txt"))
            {
                foreach (string s in SubRecord)
                {
                    sw.WriteLine(s);
                }
            }

موفق باشید.

پاسخ داده شده فروردین 5, 1393 بوسیله ی veniz2008 (امتیاز 2,083)   1 5 21
انتخاب شد فروردین 5, 1393 بوسیله ی SaveMe
...