![](/img/trans.png)
[英]I need to initialize a 2D array by reading lines from a .txt file then splitting each individual line every time a semicolon shows up in each line
[英]Reading from txt file each line as Array
我正在开发Winform应用程序,它将员工数据作为4个元素的数组,并使用SEPARATOR(“,”)正确地将这些数据保存到一行中的文本文件中。
我的问题是如何使它加载任何行数据并识别分隔符(“,”),以便我可以通过名称的第一项读取所有数据?
public partial class Form1 : Form
{
string[] data = new string[4];
string name;
string job;
string salary;
string join;
#region Save
void save()
{
if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "")
{
MessageBox.Show("Please Fill All Fields", "error");
}
FileStream file = new FileStream("info.txt", FileMode.Append, FileAccess.Write);
StreamWriter wr = new StreamWriter(file);
wr.WriteLine(String.Join(",", data));
wr.Flush();
wr.Close();
comboBox1.Items.Add(data[0]);
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
}
#endregion
#region Search
void search()
{
FileStream file = new FileStream("info.txt", FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(file);
sr.ReadLine(string.//what should i do here?
string[] lines = File.ReadAllLines("info.txt");
data[0].CompareTo(comboBox1.SelectedItem);
sr.ReadLine();
if (data[0] == name)
{
textBox1.Text = (data[0]);
textBox2.Text = (data[1]);
textBox3.Text = (data[2]);
textBox4.Text = (data[3]);
}
}
#endregion
您只需再次读取该文件,并在您选择的分隔符上使用Split
var textLines = File.ReadAllLines("");
foreach (var line in textLines)
{
string[] dataArray = line.Split(',');
}
最后工作,行拆分为数组数据,每个都添加在右侧文本框中:
void search()
{
FileStream file = new FileStream("info.txt", FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(file);
sr.ReadLine();
var textLines = File.ReadAllLines("info.txt");
foreach (var line in textLines)
{
string[] dataArray = line.Split(',');
dataArray[0].CompareTo(comboBox1.SelectedItem);
if (dataArray[0] == comboBox1.SelectedItem.ToString())
{
textBox1.Text = (dataArray[0]);
textBox2.Text = (dataArray[1]);
textBox3.Text = (dataArray[2]);
textBox4.Text = (dataArray[3]);
}
}
}
非常感谢李伟先生
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,
string key, string def, StringBuilder retVal,
int size, string filePath);
/// <summary>
/// read value from given section and key
/// </summary>
/// <param name="Section">string</param>
/// <param name="Key">string</param>
/// <returns>string</returns>
public string IniReadValue(string Section, string Key)
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section, Key, "", temp,
255, this.path);
return temp.ToString();
}
要调用此功能,请参阅下面的代码
string[] sBENCHNO=new Strin[256];
sBENCHNO = ini.IniReadValue("Sextion", "Key");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.