![](/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.