分割字符串,并将其分配给字典
问题描述:
我有一个包含许多线,像这样的文本文件:分割字符串,并将其分配给字典
花{郁金香|太阳花|玫瑰}
性别{女|男}
宠物猫{|狗|兔}
我知道如何从文件中读取行,但什么是分裂和存储类别及其子项在字典中的AF的最佳方式terwards?让我们从包含上述所有行的字符串数组中进行说明?
答
的想法使用Key
和value
使用正则表达式是正确的,但我更喜欢使用命名捕获的可读性
var regexp = new Regex(@"(?<category>\w+?)\{(?<entities>.*?)\}");
var d = new Dictionary<string, List<string>>();
// you would replace this list with the lines read from the file
var list = new string[] {"Flowers{Tulip|Sun Flower|Rose}"
, " Gender{Female|Male}"
, "Pets{Cat|Dog|Rabbit}"};
foreach (var entry in list)
{
var mc = regexp.Matches(entry);
foreach (Match m in mc)
{
d.Add(m.Groups["category"].Value
, m.Groups["entities"].Value.Split('|').ToList());
}
}
你得到与该类别作为关键一本字典,并在字符串列表中的值
答
您可以使用此:这个表达式的
string line = reader.ReadLine();
Regex r = new Regex(@"(\w+){(\w+)}");
现在循环后的结果:
foreach(Match m in r.Matches(line)) {
yourDict.Add(m.Groups[1], m.Groups[2].Split(' '));
}
答
您可以在此代码
string T = @"Flowers{Tulip|Sun Flower|Rose}
Gender{Female|Male}
Pets{Cat|Dog|Rabbit}";
foreach (var line in T.Split('\n'))//or while(!file.EndOfFile)
{
var S = line.Split(new char[] { '{', '|','}' }, StringSplitOptions.RemoveEmptyEntries);
string Key = S[0];
MessageBox.Show(Key);//sth like this
for (int i = 1 ; i < S.Length; i++)
{
string value = S[i];
MessageBox.Show(value);//sth like this
}
}
你从输出想要什么?一个*键*和一些*值*? – 2014-09-24 10:39:48
我想添加类别(例如鲜花)作为listView中的项目,当我选择我想在第二个listView中显示子类别(郁金香,太阳花,玫瑰)的类别。但要知道如何正确地分割它并将其放入字典中将会非常有帮助。 – betaFlux 2014-09-24 10:45:30
是“|”可能值的占位符,还是文件中的实际字符? – HimBromBeere 2014-09-24 10:51:43