C#Hashtable搜索

时间:2017-07-20 19:41:02

标签: c# search hashtable

我需要搜索一些数据。首先,我的代码选择第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
        }
    }
}

1 个答案:

答案 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");

        }