字符串替换(C#)
用c#编程。字符串替换(C#),c#,C#,用c#编程。 我试图用另一个字符替换字符串中的每个字符(加密),但我需要一些帮助。我打算用两个数组来做这件事,一个是字母表,另一个是替换值,但我意识到如果整个字母表的大小,我必须做一个else,我真的没有时间。我想知道是否有更简单、更快的方法。这就是我目前所拥有的 private string EncryptFn(string Sinput) { string STencryptedResult = "Null for now"; char[] CAlphabet = "ABCD
我试图用另一个字符替换字符串中的每个字符(加密),但我需要一些帮助。我打算用两个数组来做这件事,一个是字母表,另一个是替换值,但我意识到如果整个字母表的大小,我必须做一个else,我真的没有时间。我想知道是否有更简单、更快的方法。这就是我目前所拥有的
private string EncryptFn(string Sinput)
{
string STencryptedResult = "Null for now";
char[] CAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
char[] Encrypt = "QWERTYUIOPASDFGHJKLZXCVBNM".ToCharArray();
return STencryptedResult;
}
谢谢您可以使用字典:
var map = new Dictionary<char,char> {
{ 'A', 'Q' },
{ 'B', 'W' },
// etc
};
这不是一种非常强的加密,但您可以使用以下版本,该版本将非常高效,并且只需要很少的数据即可定义加密:
private string EncryptFn(string Sinput)
{
string coding = "QWERTYUIOPASDFGHJKLZXCVBNM";
StringBuilder result = new StringBuilder();
foreach (char c in Sinput)
{
int index = (Char.ToUpper(c) - 'A');
if (index >= 0 && index < coding.Length)
result.Append(coding[index]);
else
result.Append(c);
}
return result.ToString();
}
私有字符串加密fn(字符串输入)
{
字符串编码=“qwertyuiopasdfghjklzxcvnm”;
StringBuilder结果=新建StringBuilder();
foreach(字符c在Sinput中)
{
int index=(Char.ToUpper(c)-'A');
如果(索引>=0&&index > p>您可以考虑按位操作,它们对于加密和解密数据非常有用。见下文
输入字符串中的字符数是否有限?但您的CAlphabet
仅处理“a”到“Z”。其他字符会发生什么情况?。是否有任何原因不使用内置加密提供程序?您现在所做的不是加密。充其量,这是一个密码。你应该和我们FrodoBaggins分享你的最终目标。如果这是一个家庭作业,目前提供的解决方案是合适的。如果这是为了安全地存储密码,则不需要加密密码,而需要对其进行散列。如果这是为了向朋友发送秘密消息,那么也有相应的解决方案导致错误方法“ToUpper”的无重载接受0个ArgumentsHanks,标记为答案!不,你把安德鲁的回答作为回答。这很好,但我希望我的代码比他的代码更好,声明需要的输入更少。哦,我试着打两个标记,对不起:P。我个人更喜欢你的答案,但我也想给他一些信任。我不介意哪个被标记为正确答案,因为它们都给出了期望的结果。但是关于性能,我尝试了一些基准测试(每个解决方案有1000000次迭代),发现使用Char.ToUpper()几乎将运行时间增加了一倍,并且使此解决方案比字典查找更慢。微优化FTW!;]
private string EncryptFn(string Sinput)
{
string coding = "QWERTYUIOPASDFGHJKLZXCVBNM";
StringBuilder result = new StringBuilder();
foreach (char c in Sinput)
{
int index = (Char.ToUpper(c) - 'A');
if (index >= 0 && index < coding.Length)
result.Append(coding[index]);
else
result.Append(c);
}
return result.ToString();
}