0

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

例如,如果我定义单词 'are' 可以写成 'are' 或 'r' 并且单词 'you' 写成 'you' 或 'u',则预期的输出会传递类似于“how are你将成为:

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

我考虑过可以将 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"};
 }

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

单词需要按照正确的顺序书写,我只需要能够生成多种不同的方式来编写相同的内容。一旦我对此有所了解,我还希望它不仅适用于这个特定的句子结构。这可能吗?

4

1 回答 1

0

万一有人遇到类似的问题,我最终使用了 Eric Lippert 的笛卡尔产品解决方案的 hack 来实现我想要的工作:

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

于 2012-11-05T17:39:06.943 回答