C# 通过Streamreader获取部分行

C# 通过Streamreader获取部分行,c#,C#,我有以下StreamReader: using (StreamReader sr = new StreamReader("TestFile.txt")) { while (!sr.EndOfStream) { String line = sr.ReadLine(); if (line != null && line.Contains(":")) Console.WriteLine(line.Split(':'

我有以下
StreamReader

using (StreamReader sr = new StreamReader("TestFile.txt"))
{
    while (!sr.EndOfStream)
    {
        String line = sr.ReadLine();
        if (line != null && line.Contains(":"))
            Console.WriteLine(line.Split(':')[1]);
    }
}
我想知道的是:

如何提取该行的一部分

111033@@Item1@@21@@0@@37@@0@@0@@0@@0@@0@@0@@0@@0@@1000

我想得到
111033,21,371000
并将其放入这样的文本框中

textbox_1 = 111033 etc.
var items = new List<Address>();
while (!sr.EndOfStream) {
    string line = sr.ReadLine();
    if (line != null && line.Contains("@")) {
        Address a = Address.FromLine(line);
        items.Add(a);
    }
}
myComboBox.DataSource = items;
这会将所有数字写入控制台。您还可以将其缩短,如下所示:

 line.Split(new [] { '@' }, StringSplitOptions.RemoveEmptyEntries)
     .Where(x => !x.Any(char.IsLetter))
     .ToList()
     .ForEach(Console.WriteLine);

我假设商业at字符(@)是将行分隔为列的分隔符。如果您需要的部分总是在相同的列中,那么您知道它们的索引。因此,从拆分分隔符处的行开始,并选取您感兴趣的列:

string[] parts = line.Split('@');
textBox_1 = part[0]; // 111033
textBox_2 = part[4]; // 21
textbox_3 = part[8]; // 37
...

这些线代表什么?因为我不知道,所以我只是以一个人的地址为例(这里可能不是这样,但这并不重要)

创建一个可以存储对象的类。(为了简单起见,我没有包括有效性测试。)

现在可以将这些对象添加到组合框中。它们将根据
ToString
方法自动显示。您可以使用

Address a = (Address)myComboBox.SelectedItem;

您可以像这样填充组合框

textbox_1 = 111033 etc.
var items = new List<Address>();
while (!sr.EndOfStream) {
    string line = sr.ReadLine();
    if (line != null && line.Contains("@")) {
        Address a = Address.FromLine(line);
        items.Add(a);
    }
}
myComboBox.DataSource = items;
var items=newlist();
而(!sr.EndOfStream){
字符串行=sr.ReadLine();
如果(line!=null&&line.Contains(“@”)){
地址a=地址。起始行(第行);
增加(a)项;
}
}
myComboBox.DataSource=项目;

行的格式总是这样吗?是的,我得到了大约3000行相同的格式,但不是所有行都是这样,而且顺序也不一样。我可以在combobox中输入部分[0]并显示以combobox.text开头的整行吗?关键的问题是要显示的部分的选择标准是什么?它们总是在相同的位置(在相同的列中),还是您总是希望显示不为零的数字,而与它们的位置无关?请说明!我要这部分的0整数,1字符串,4,37 0 0,37 0 0 0可能在组合框中,显示1,4,37,37,37,37,37,3,37,37,3,37,37,37,37,37,37 0 0 0 0,37,37,37,37,37,37,37,37,0,37,37,3,37,37,37,3,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,0,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,7,7,7,7,37,7,7,7,37,37,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,“0@@0@@0@@0@@0@@0@@0@@SOUR@@Text”这里@9@@6@@30@@0@@12000@@500@@我想在combobox中加载部分[0]。项目然后当我从combobox文本框中选择项目时,根据行获取该部分的1,4,37以combobox开头。文本抱歉,英语不是我的第一个语言