我得到了一个文本文件。文本文件的详细信息在下面提到
AB | 123456受体0M9C [某些名称] ABRAKADABRATDNPQLQVVIFSAAAAAAAAAABHDBSIISLTLLDSAMNJHDFBHGFBNFBHGHFBNVCN AGHDGBEBEHGFNMFIFLGSTEFFLLASMSYDCYVAICKPLHYTTIMSDRICYQLIISSWLAGFLVIFPPLAM AB | 145678受体00AB [某些名称] NABSNBFBFGBFNBNBNBFJHBFNBFNBJHJBFNBFVIIHSDSHLHTPMYFFLSNLSLVDLGYSSAVAPKTV AALRSGDKAISYDGCAAQFFFFVGFATVECYLLASMAYDRHAAVCRPLHYTTTMTAGVCALLATGSYVSG AB | 137565受体0D0 [某些名称] MKNKSMEIEFILLGLTDDPQLQIVIFLFLFLNYTLSLMGNLIIIILTLLDPRLKTPMYFFLRNFSFLEVIFTTVCIP KJKDHDNDJFNFNNBFNBFBNBFBJBNFJNFJFGVALLYTSIAPLLNPFIYTLRNQQVKEVFWDVLQKNLCFSKRPF
我必须创建到2个列表,
第一个列表名称(带有[some name]的行)第二个列表unique_code(带有大写字母的行)
名称和唯一代码相互关联。
我可以使用以下代码从文本文件中获取名称
List<string> Name = new List<string>();
System.IO.StreamReader file =new System.IO.StreamReader(filename);
var query = from line in File.ReadLines(filename) //linq query to select the name
where line.Contains("some name")
select line;
foreach (string line in query) //storing the name in a list
{
Name.Add(line);
}
任何人都可以提出如何获得唯一代码的第二份清单的建议。
可能:
List<List<string>> lists = File.ReadLines("Path")
.GroupBy(l => l.Contains("[some name]"))
.Select(g => g.ToList())
.ToList();
如果名称行与其他行相关,我建议改用自定义类。这使您的代码更具可读性和可维护性。
这是一个示例类:
public class Receptor
{
public Receptor(string name)
{
this.Name = name;
this.Codes = new List<string>();
}
public string Name { get; set; }
public List<string> Codes { get; set; }
}
这是我要使用的循环:
List<Receptor> receptors = new List<Receptor>();
var lines = File.ReadLines("Path").SkipWhile(l => !l.Contains("[some name]"));
foreach (string line in lines)
{
if (line.Contains("[some name]"))
receptors.Add(new Receptor(line));
else
receptors.Last().Codes.Add(line);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句