如何在每个组中选择一个字符串并按顺序连接它们?

时间:2015-10-11 14:41:47

标签: c#

我正在学习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); }

                 }

我的代码只是依次显示狗,猫,虎,狼,吃,咬,狩猎,面包,肉馅饼,鱼。至少我应该判刑,但我失败了。

1 个答案:

答案 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的列表,其中包含您最后一句的每个部分。因此,在您的示例中,此列表将包含:

  • 在索引0处 - 数值为:狗,猫,虎,狼。数组长度为4
  • 在索引1处 - 具有值的数组:eats |咬伤|狩猎。数组长度为3
  • 在索引2 - 带有值的数组:面包,肉,鱼。数组长度为3

现在你必须编写这个sentenceParts列表元素(数组)的每个组合。

这个解决方案对你来说是否清楚?你知道下一步你必须做什么吗?