这个项目的背景。它最初是一项简单的家庭作业,需要我存储 5 个邮政编码及其对应的城市。当用户在文本框中输入邮政编码时,会返回相应的城市,同样可以执行相反的操作。我编写了返回这些值的代码,但后来我决定将所有邮政编码及其对应的城市存储在外部 .csv 中,并将这些值存储在数组中并运行代码,因为如果它值得做,它就值得过头了!澄清一下,这不再是家庭作业,只是为了了解更多关于在 C# 中使用外部文件的信息。
在下面的代码中,我已经调用成功打开文件,现在我只需要帮助弄清楚如何提取存储在两个单独列中的数据(一列用于城市,一列用于邮政编码)并将它们存储在两个数组中由 for 循环执行。这是我现在拥有的代码。您可以看到我之前如何将其他值存储在数组中并将它们拉出:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnConvert2City_Click(object sender, EventArgs e)
{
try
{
string dir = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().Location);
string path = dir + @"\zip_code_database_edited.csv";
var open = new StreamReader(File.OpenRead(path));
int EnteredZipcode = Convert.ToInt32(txtZipcode.Text.Trim());
string result = "No Cities Found";
string[] Cities = new String[5] { "FLINTSTONE", "JAMAICA", "SCHENECTADY", "COTTONDALE", "CINCINNATI" };
int[] Zipcode = new int[5] { 30725, 11432, 12345, 35453, 45263 };
for (int i = 0; i <= Zipcode.Length - 1; i++)
{
if (Zipcode[i] == EnteredZipcode)
{
result = Cities[i];
break;
}
}
string DisplayState = result;
txtCity.Text = DisplayState;
}
catch (FormatException)
{
MessageBox.Show("Input must be numeric value.");
}
catch (OverflowException)
{
MessageBox.Show("Zipcode to long. Please Re-enter");
}
}
private void btnConvert2Zipcode_Click(object sender, EventArgs e)
{
string dir = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetExecutingAssembly().Location);
string path = dir + @"\zip_code_database_edited.csv";
var open = new StreamReader(File.OpenRead(path));
String EnteredCity = txtCity.Text.ToUpper();
string result = "No Zipcode Found";
string[] Cities = new String[5] { "FLINTSTONE", "JAMAICA", "SCHENECTADY", "COTTONDALE", "CINCINNATI" };
int[] Zipcode = new int[5] { 30725, 11432, 12345, 35453, 45263 };
for (int i = 0; i <= Cities.Length - 1; i++)
{
if (Cities[i] == EnteredCity)
{
result = Convert.ToString(Zipcode[i]);
break;
}
}
string DisplayZip = result;
txtZipcode.Text = DisplayZip;
}
}
以下数据是我的 excel .csv 中的数据的一个片段:
zip,primary_city
44273,Seville
44274,Sharon Center
44275,Spencer
44276,Sterling
44278,Tallmadge
44280,Valley City
44281,Wadsworth
44282,Wadsworth
44285,Wayland
依此类推,大约有 46,000 行。
如何将 zip 和 primary_city 拉到两个单独的数组中(我猜是一些“.Split”、“line”),我的 for 循环可以在这些数组上运行?
此外,如果有更好的方法来解决这个问题,请告诉我(但请务必留下解释,因为我想了解您来自哪里)。