我目前有一个C#问题,我无法理解。从本质上讲,我需要生成一个字符串列表或数组,这些字符串是基于句子中一个或多个单词可能具有不同拼写或用法的事实的句子。我打算对句子中的每个单词(潜在地)有许多不同的可能性。
例如,如果我定义单词"are"可以写成"are"或"r",而单词"you"可以写成"you"或"u",则传递"How are you"的预期输出将是:
- "你好吗"
- "你好吗"
- "你好吗"
- "你好吗"
我考虑过我可以将枚举用于单词类型,例如:
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"};
}
但我似乎找不到一种像样的方法来定义一个句子,使用固定字符串和这些可变单词类型标识符的混合并创建可能的组合。
单词需要按照正确的顺序编写,我只需要能够生成多种不同的方法来编写同一件事。一旦我有了这方面的东西,我也希望它不仅适用于这个特定的句子结构。这可能吗?
如果有人遇到类似的问题,我最终使用Eric Lippert的笛卡尔产品解决方案的黑客来按我想要的方式工作:
http://blogs.msdn.com/b/ericlippert/archive/2010/06/28/computing-a-cartesian-product-with-linq.aspx