Search

Saturday, April 19, 2008

ลองเขียน C# แทนค่าดูมั่ง

หลังจากที่ออกไปถ่ายรูปตอนเช้าแล้ว กลางวันไม่มีไรทำ เอิ๊ก ๆ แต่จริง ๆ น่ะมีเยอะมากจนไม่รู้ว่าจะเริ่มทำอะไรดี นึกขึ้นได้ว่าต้องแก้ไขข้อมูล แต่ว่าเป็นการแทนค่า ผมยิ่งเป็นคนขี้เกียจอยู่ด้วย เลยเขียนเป็นโปรแกรมซะเลย ด้วยภาษา C#

สิ่งที่ผมต้องการคือผมมีรายชื่อจังหวัดและอำเภอทั่วทั้งประเทศไทย แล้วผมจะต้องแทนแต่ละจังหวัดและอำเภอให้เป็นรหัส เพื่อจะได้ง่ายเวลาเอามันลงไป Database
เช่นจังหวัดกรุงเทพมหานคร ต้องแทนค่าให้เป็น 2 เป็นต้น นี้เลยครับ Code ข้างล่างนี้เลยครับ ผมใช้วิธีการอ่านค่าต่าง ๆ เข้ามาเก็บไว้ใน Array ก่อน (เพราะข้อมูลไม่ค่อมากเท่าไหร่ ประมาณพันกว่า ๆ ) แล้วก็ใช้ ลูปวนแทนค่าเอา เสร็จแล้วก็เขียนมันไปที่ไฟล์ตัวที่เราอ่านมานั่นละ อิๆๆ ง่ายไหมล่ะครับ
ผมใช้ VS2005 ก่อนอื่นเราก็ต้อง New Project ขึ้นมาก่อน แล้วอย่างลืม using System.IO; ด้วยน่ะครับเพราะเราจะเรียกใช้ Class ใน Namespace IO ในการอ่านและเขียนไฟล์
หน้าตาก็เป็นแบบนี้ล่ะครับ คลิกปุ๊บมันก็จะทำงานให้




ส่วน Source code ก็ข้างล่างนี้เลยครับ
private void button1_Click(object sender, EventArgs e)
{
try
{
//part of file source and path file for replace
string pathSource = @"C:\Users\AWAT\Desktop\provinceSource.txt";
string pathID = @"C:\Users\AWAT\Desktop\provinceID.txt";


string[] provinceID = new string[76];
string[] provinceSource = new string[939];
string[] sp = new string[2];
char spliter = '|';
string line;
int index = 0;

//Read file source to array
StreamReader srID = new StreamReader(pathID);
while ((line = srID.ReadLine()) != null)
{
provinceID[index] = line;
index++;
}
srID.Close();
index = 0;

//Read proviceID to array
StreamReader srSource = new StreamReader(pathSource);
while ((line = srSource.ReadLine()) != null)
{
provinceSource[index] = line;
index++;
}
srSource.Close();
//Convert province to ID
for (int i = 0; i < provinceSource.Length; i++)
{
for (int j = 0; j < provinceID.Length; j++)
{
sp = provinceID[j].Split(spliter);
if (provinceSource[i] == sp[1])
{
provinceSource[i] = sp[0];
}
}
}

//write id to file
StreamWriter sw = new StreamWriter(pathSource);
for (int i = 0; i < provinceSource.Length; i++)
{
sw.WriteLine(provinceSource[i]);
}
sw.Flush();
sw.Close();
MessageBox.Show("Replace success");

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

No comments: