سلام.
ترتیبی رو که برای شهرها و اعداد ذکر کردید بسیار مهم هست. من فرض میکنم دقیقا همین ترتیبی که گفتید در فایلتون رعایت شده یعنی :
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);
}
}
موفق باشید.