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