我正在学习c#编程,这个问题对我来说太难了。
[狗|猫|虎|狼] [吃|咬|狩猎] [面包|肉|鱼]
在第一组中选择一个,
选择第二组中的一个,
选择第3组中的一个,
按顺序组合它们,这样你就可以制作句子。 (例如:狗吃鱼/确保结果中没有重复的句子)
然后创建一个包含所有这些句子的列表或数组。
我挣扎了6个小时。我怎样才能做到这一点?提前谢谢。
String input = [dog|cat|tiger|wolf][eats|bites|hunts][a bread|a meat|a fish];
String pattern = @"\[([^\[\]]+)\]";
foreach (Match m in Regex.Matches(input, pattern))
{
String mycontent = m.Groups[1].Value;
String[] values = mycontent.Split('|');
foreach (string finalm in values)
{ MessageBox.Show(finalm); }
}
我的代码只是依次显示狗,猫,虎,狼,吃,咬,狩猎,面包,肉馅饼,鱼。至少我应该判刑,但我失败了。
答案 0 :(得分:0)
将您的代码修改为:
String input = "[dog | cat | tiger | wolf][eats | bites | hunts][a bread | a meat | a fish]";
String pattern = @"\[([^\[\]]+)\]";
List<string[]> sentenceParts = new List<string[]>();
foreach (Match m in Regex.Matches(input, pattern))
{
String mycontent = m.Groups[1].Value;
String[] values = mycontent.Split('|');
sentenceParts.Add(values);
}
这样您就会有一个名为sentenceParts
的列表,其中包含您最后一句的每个部分。因此,在您的示例中,此列表将包含:
现在你必须编写这个sentenceParts
列表元素(数组)的每个组合。
这个解决方案对你来说是否清楚?你知道下一步你必须做什么吗?