基于单词替换动态创建给定类型的所有句子

时间:2012-08-14 12:52:34

标签: string formatting permutation combinations replace

我现在有一个C#问题,因为我无法理解。基本上我需要生成一个字符串列表或数组,这些句子是基于句子中一个或多个单词可能具有不同拼写或用法的事实的句子。我打算为(可能)句子中的每个单词提供多种不同的可能性。

例如,如果我定义'are'这个单词可以写成'are'或'r'而单词'you'可以写成'you'或'u',那么预期的输出就是为了传递一些东西。 “你好吗”:

  • “你好吗”
  • “你好吗”
  • “你好吗”
  • “你好吗”

我认为我可以将Enums用于单词类型,例如:

public enum Word  
{  
  Are,  
  You  
}  

并使用某种辅助方法返回一组可能的用法:

public static string GetVariants(Word w)  
{
 switch(w)
 {
   case Word.Are:
   return new string[] { "are", "r" };
   case Word.You:
   return new string[] { "you", "u"};
 }

但我似乎无法找到一种合适的方法来使用固定字符串和这些可变字类型标识符的混合来定义句子并创建可能的组合。

这些单词需要按照正确的顺序编写,我只需要能够生成许多不同的编写相同内容的方法。一旦我有了这个,我也希望它不仅适用于这个特定的句子结构。这可能吗?

1 个答案:

答案 0 :(得分:0)

任何人遇到类似的问题,我最终得到了这个,因为我想使用Eric Lippert的笛卡尔积软件解决方案:

http://blogs.msdn.com/b/ericlippert/archive/2010/06/28/computing-a-cartesian-product-with-linq.aspx