我需要搜索一些数据。首先,我的代码选择第29位并保留4位数(如下所示,它在下面是1721),并比较下面的行。我设法搜索第29位4位并显示消息,因为你可以看到行中是否有搜索到的数字,这很容易。这是我的问题;当我搜索数字时,如何使它在标签(label9,label10,label11,label12)上显示前4位数,第3位数,第3位6位数第4位数。我尝试currentLine.Substring(1, 4);
,但显示错误:
substring为null。
我是否需要在//搜索中找到一个循环?
例如,假设我们将1723放在搜索上,它必须在label9上显示1097,它必须在label10上显示003,等等。
数据:
1096:001:161207:085050:1721:001:F:000:0007
1096:001:161207:085050:1721:001:F:000:0007
1099:003:161207:085719:1722:001:F:000:0007
1099:003:161207:085719:1722:001:F:000:0007
1097:002:161207:085719:1723:001:F:000:0007
1097:002:161207:085719:1723:001:F:000:0007
代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
String currentItemIndex = "", currentItemData = "", currentLine = "";
Hashtable hashtable = new Hashtable();
private void button1_Click(object sender, EventArgs e)
{
//Select File
openFileDialog1.ShowDialog();
textBox1.Text = openFileDialog1.FileName;
//Select File
//Read And Split
FileInfo file = new FileInfo(openFileDialog1.FileName.ToString());
StreamReader read = file.OpenText();
currentLine = read.ReadLine();
currentItemIndex = currentLine.Substring(23, 4);
currentItemData += currentLine;
do
{
currentLine = read.ReadLine();
if (currentLine == null)
{
hashtable.Add(currentItemIndex, currentItemData);
break;
}
if (!currentItemIndex.Equals(currentLine.Substring(23, 4)))
{
hashtable.Add(currentItemIndex, currentItemData);
currentItemData = "";
currentItemIndex = currentLine.Substring(23, 4);
}
currentItemData += currentLine;
} while (true);
}
private void button2_Click(object sender, EventArgs e)
{
//Search Start
string search = textBox2.Text;
if (hashtable.ContainsKey(search))
{
MessageBox.Show("Found");
label9.Text=
label10.Text=
label11.Text=
}
else
{
MessageBox.Show("NotFound"); }
//Search End
}
}
}
答案 0 :(得分:0)
我发现这里的解决方案适合好奇的人:
string search = textBox2.Text;
if (hashtable.ContainsKey(search))
{
this.Size = new Size(324, 260);
string value1 = (string)hashtable[search];
label9.Text= value1.Substring(0, 4);
label10.Text = value1.Substring(5, 3);
label11.Text = value1.Substring(9, 6);
label12.Text = value1.Substring(16, 6);
label13.Text = value1.Substring(23, 4);
MessageBox.Show("Found");
}
else
{
MessageBox.Show("NotFound");
}