循环帮助从文本文件存储值

时间:2014-05-13 23:44:18

标签: c# string loops streamreader

我正在阅读文本文件并将其拆分为分界点。在:之前的一切都是左边的值,后面的一切都是正确的。通过这些行的最佳循环是什么,并将字符串值存储到2个列表中,左侧和右侧?我不需要它们输出,只需将值存储在列表中。

namespace WindowsFormsApplication8
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        id newId = new id();
        newId.Left = "";
        id newId2 = new id();
        newId2.Right = "";

    }
    private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog of = new OpenFileDialog();
        of.ShowDialog();
        textBox1.Text = of.FileName;
        using (StreamReader sr = new StreamReader(of.FileName));

        string content = File.ReadAllText(of.FileName);
        string[] split = content.Split(';' , ':');
        foreach (string segment in split)
        {

            if 

        }

              }

2 个答案:

答案 0 :(得分:0)

对于您提供的内容,foreach可以做得很好。

至于如何存储它们,这完全取决于你需要用它们做什么。如果&#34;左边的项目&#34;都是独一无二的,你可以制作一本字典,其中&#34; left&#34;是关键,&#34;对&#34;是价值。这很容易使用。否则,如果&#34; left&#34;不是唯一的,您可以有一个元组列表(List<Tuple<string,string>>)或KeyValuePairs(List<KeyValuePair<string,string>>)。

答案 1 :(得分:0)

这应该有效。不知道你最后是否想要分号,所以我就把它删除了。

var left = new List<string>();
var right = new List<string>();
using (var diag = new OpenFileDialog()) {
    if (diag.ShowDialog() == DialogResult.OK) {
        using (var sr = new StreamReader(diag.FileName)) {
            string line;
            while ((line = sr.ReadLine()) != null) {
                var split = line.Replace(";", "").Split(':');
                if (split[0] != null && split[1] != null) {
                    left.Add(split[0]);
                    right.Add(split[1]);
                }
            }
        }
    }
}

我注意到你提到这是一个关键/有价值的事情所以我实际上会这样做:

var dict = new Dictionary<string, string>();
using (var diag = new OpenFileDialog()) {
    if (diag.ShowDialog() == DialogResult.OK) {
        using (var sr = new StreamReader(diag.FileName)) {
            string line;
            while ((line = sr.ReadLine()) != null) {
                var split = line.Replace(";", "").Split(':');
                if (split[0] != null && split[1] != null)
                    dict.Add(split[0], split[1]);
            }
        }
    }
}

可以清理一下,但你明白了。您正在阅读整个文件然后拆分。你怎么知道每条线的左边和右边是哪一个?也许检查偶数和赔率?虽然你只能阅读一行然后拆分它,这太可怕了。然后只需抓住数组中的第一个和第二个项目就可以获得两个项目。