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开头。文本抱歉,英语不是我的第一个语言