C# 从预定义的单词生成一个句子

C# 从预定义的单词生成一个句子,c#,C#,我正在开发一个系统,该系统为用户生成密码,拨打电话,每次只说一个字符。例如,密码为“bla123” 现在我有一个基本的词: “国会大厦”、“小型”和“如在” 此外,我还有一张表: // Letter | Word | Code | // --------+----------+---------| // a | Alpha | 97, 65 | // b | Bravo | 98, 66 | // c | Charlie |

我正在开发一个系统,该系统为用户生成密码,拨打电话,每次只说一个字符。例如,密码为“bla123”

现在我有一个基本的词:

“国会大厦”、“小型”和“如在”

此外,我还有一张表:

//  Letter | Word     | Code    |
// --------+----------+---------|
//  a      | Alpha    |  97, 65 |
//  b      | Bravo    |  98, 66 |
//  c      | Charlie  |  99, 67 |
//  d      | Delta    | 100, 68 |
//  e      | Echo     | 101, 69 |
//  f      | Foxtrot  | 102, 70 |
//  g      | Golf     | 103, 71 |
//  h      | Hotel    | 104, 72 |
//  i      | India    | 105, 73 |
//  j      | Juliet   | 106, 74 |
//  k      | Kilo     | 107, 75 |
//  l      | Lima     | 108, 76 |
//  m      | Mike     | 109, 77 |
//  n      | November | 110, 78 |
//  o      | Oscar    | 111, 79 |
//  p      | Papa     | 112, 80 |
//  q      | Quebec   | 113, 81 |
//  r      | Romeo    | 114, 82 |
//  s      | Sierra   | 115, 83 |
//  t      | Tango    | 116, 84 |
//  u      | Uniform  | 117, 85 |
//  v      | Victor   | 118, 86 |
//  w      | Whiskey  | 119, 87 |
//  x      | X-ray    | 120, 88 |
//  y      | Yankee   | 121, 89 |
//  z      | Zulu     | 122, 90 |
//  1      | One      | 49      |
//  2      | Two      | 50      |
//  3      | Three    | 51      |
//  4      | Four     | 52      |
//  5      | Five     | 53      |
//  6      | Six      | 54      |
//  7      | Seven    | 55      |
//  8      | Eight    | 56      |
//  9      | Nine     | 57      |
//  0      | Zero     | 48      |
现在,我想做一个句子,比如:

“国会大厦B在布拉沃” “利马的小L” “阿尔法中的小A” “国会大厦B在布拉沃” “利马的小L” “阿尔法中的小A” “一个” “两个” “三个”

根据假定的密码

有谁能分享一下我如何将表存储在内存中,只需输入一个密码字符串,并为遇到的每个字符获取一个句子

谢谢。

诸如此类:

characterLookup那样填写字典。添加('a','Alpha')
,在代码示例中注意'ToLower',只存储小写字母

键值存储(字典)是所选择的数据结构,因为我们正在按键(在本例中为字母)进行查找

private Dictionary characterLookup=new Dictionary();
公共字符串[]获取句子(字符串密码)
{
string[]句=新字符串[password.Length];
for(int i=0;i
一种方法是创建包含字母、单词和代码的类,例如:

public class MyClass
{
    public char Letter { get; set; }
    public string Word { get; set; }
    public string Code { get; set; }
}
HashSet<MyClass> letters = new HashSet<MyClass>();
letters.Add(new MyClass { Letter = 'a', Word = "alpha", Code = "123,23" });
letters.Add(new MyClass { Letter = 'b', Word = "bravo", Code = "123,23" });
letters.Add(new MyClass { Letter = 'c', Word = "charlie", Code = "123,23" });
letters.Add(new MyClass { Letter = 'd', Word = "delta", Code = "123,23" });
//.......................
然后,您可以定义一个
HashSet
来包含字母,如下所示:

public class MyClass
{
    public char Letter { get; set; }
    public string Word { get; set; }
    public string Code { get; set; }
}
HashSet<MyClass> letters = new HashSet<MyClass>();
letters.Add(new MyClass { Letter = 'a', Word = "alpha", Code = "123,23" });
letters.Add(new MyClass { Letter = 'b', Word = "bravo", Code = "123,23" });
letters.Add(new MyClass { Letter = 'c', Word = "charlie", Code = "123,23" });
letters.Add(new MyClass { Letter = 'd', Word = "delta", Code = "123,23" });
//.......................

是的,不是。但是你试过什么?谢谢你指出错误。我尝试了很多方法,希望我能有一个代码密集的存储,然后通过简单的一行代码检索来实现。到目前为止运气不好。现在看看答案。-小写公共属性-MyClass命名-包括code属性,它用于查找不必要的字符代码-使用应该使用字典的列表,更快,更符合逻辑-使用stringbuilder,但是,如果通过连接字符串来否定性能改进,那么只能查找小写字符,而对于大写字符,这将失败characters@BasBrekelmans,对于公共属性,我只是遵循OP列表中提到的名称,而且我没有假设字符的代码是ASCII码,根据StringBuilder,这只是一个建议。如果答案不是有用的或错误的,它可能会被否决,但这也是我的观点,它不符合用户发布的要求。(应该支持小写和大写字符)。@BasBrekelmans,那么?我的代码有大写或小写的复选框?你在说什么?-它试图查找大写字符,因此在MyClass集合中需要双项,或者在查找中需要ToLower。FirstOrDefault()还将抛出一个NullReferenceException,它可能对调用方意味着任何东西,很难调试。不能更新
Small
Capital
以反映更改!